我们有个慰藉经纪人在码头集装箱里运行。当我们创建JNDI连接工厂时,有一些默认属性,如
诸若此类
当我们使用JMS建立一个生产者时,我们给出如下的属性
env.put(SupportedProperty.SOLACE_JMS_JNDI_CLIENT_ID, config.getJndiClientID());
env.put(SupportedProperty.SOLACE_JMS_PROP_SENDER_ID, config.getSenderID());
env.put(SupportedProperty.SOLACE_JMS_VPN, config.getVpn());
env.put(SupportedProperty.SOLACE_JMS_JNDI_CONNECT_RETRIES, 0);
env.put(SupportedProperty.SOLACE_JMS_JNDI_RECONNECT_RETRIES, 0);
env.put(SupportedProperty.SOLACE_JMS_JNDI_CONNECT_RETRIES_PER_HOST, 0);但是,在应用程序运行时,以及在建立连接时,我在客户端设置的这些属性似乎没有效果。具体来说,我能够通过停止“安慰”的停靠容器来测试这个问题,并看到它正在尝试重新连接3次,这正是代理端的默认情况。
因此,问题是,如何在客户端强制覆盖这些属性,如果可能的话?在什么情况下,在客户端设置这些属性会产生影响?
发布于 2019-03-28 08:15:07
根据定义,通过JNDI加载JMS是一个两个步骤:首先,ConnectionFactory连接到JNDI,然后加载已经创建的JNDI对象。
属性SOLACE_JMS_JNDI_CONNECT_RETRIES (注意JNDI)实际上是第一步的参数!它定义了与JNDI联系的#重试。如果要更改加载的ConnectionFactory的定义,则需要在Solace管理员中这样做。例如,在管理GUI中,如下所示。

发布于 2019-04-06 02:42:47
当您使用env.put()时,您试图使用初始上下文来设置JMS属性。但是,这些属性也可以通过JNDI属性文件和命令行进行设置。
如果打开API调试,您应该能够看到从何处获取哪个值。
现在,一旦您能够连接到代理上的JNDI连接工厂,这些值将从代理端获取。
https://stackoverflow.com/questions/55385216
复制相似问题