Java 关于慰藉性质何时有效的困惑

Java 关于慰藉性质何时有效的困惑,java,docker,jms,solace,Java,Docker,Jms,Solace,我们有一个在docker容器中运行的安慰经纪人。当我们创建JNDI连接工厂时,有一些默认属性,例如 重新连接重试尝试 连接重试尝试 每个主机的连接重试尝试 等等 当我们使用JMS建立生产者时,我们给出如下属性 env.put(SupportedProperty.SOLACE\u JMS\u JNDI\u CLIENT\u ID,config.getJndiClientID()); put(SupportedProperty.SOLACE_JMS_PROP_SENDER_ID,config.g

我们有一个在docker容器中运行的安慰经纪人。当我们创建JNDI连接工厂时,有一些默认属性,例如

  • 重新连接重试尝试
  • 连接重试尝试
  • 每个主机的连接重试尝试
等等

当我们使用JMS建立生产者时,我们给出如下属性

env.put(SupportedProperty.SOLACE\u JMS\u JNDI\u CLIENT\u ID,config.getJndiClientID());
put(SupportedProperty.SOLACE_JMS_PROP_SENDER_ID,config.getSenderID());
put(SupportedProperty.SOLACE_JMS_VPN,config.getVpn());
环境放置(SupportedProperty.SOLACE\u JMS\u JNDI\u CONNECT\u RETRIES,0);
环境放置(SupportedProperty.SOLACE\u JMS\u JNDI\u重新连接\u重试,0);
put(SupportedProperty.SOLACE\u JMS\u JNDI\u CONNECT\u重试每个主机,0);
然而,在应用程序运行时和连接建立时,我在客户端设置的这些属性似乎没有任何效果。具体地说,我能够通过停止docker solace容器并看到它尝试重新连接3次来测试这一点,而这恰好是代理端的默认情况


因此,问题是,如果可能的话,如何在客户端强制重写这些属性?在客户端设置这些属性会在什么情况下生效?

根据定义,在JNDI上加载JMS ConnectionFactory是一个两步过程:首先API连接到JNDI,然后加载已创建的任何JMS ConnectionFactory对象

属性SOLACE\u JMS\u JNDI\u CONNECT\u RETRIES(注意JNDI)实际上是第一步的参数!它定义了联系JNDI的#重试次数。如果要更改加载的JMS ConnectionFactory的定义,需要在Solace管理员中执行此操作。例如,在管理GUI中,如下所示

使用env.put()时,试图使用初始上下文设置JMS属性。 但是这些属性也可以通过JNDI属性文件以及命令行进行设置

如果启用API调试,您应该能够看到从何处获取的值

现在,一旦您能够连接到代理上的JNDI连接工厂,这些值将从代理端获取