关于Solace属性何时有效的困惑

问题描述 投票:0回答:2

我们有一个在docker容器中运行的安慰代理。当我们创建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);

但是在应用程序运行时和连接建立时,似乎我在客户端设置的这些属性不起作用。具体来说,我能够通过停止安慰的docker容器来测试它,并且看到它正在尝试重新连接3次,这是默认情况下在代理端。

因此,问题是,如果可能的话,如何在客户端强制覆盖这些属性?在什么情况下在客户端设置这些属性会受到影响?

java docker jms solace
2个回答
1
投票

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

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

enter image description here


0
投票

使用env.put()时,您尝试使用Initial Context设置JMS属性。但是也可以通过JNDI属性文件和命令行设置这些属性。

如果打开API调试,您应该能够看到从哪里获取值。

现在,一旦您能够与代理上的JNDI连接工厂建立连接,就会从代理端获取值。

© www.soinside.com 2019 - 2024. All rights reserved.