我们有一个在 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);
但是,在应用程序运行时以及建立连接时,我在客户端设置的这些属性似乎不起作用。具体来说,我可以通过停止 solace 的 docker 容器并看到它尝试重新连接 3 次来测试这一点,这正是代理端的默认情况。
因此,问题是,如果可能的话,如何在客户端强制覆盖这些属性?在客户端设置这些属性什么情况下会生效?
最佳答案
根据定义,通过 JNDI 加载 JMS ConnectionFactory 是一个两步过程:首先 API 连接到 JNDI,然后加载已创建的任何 JMS ConnectionFactory 对象。
属性SOLACE_JMS_JNDI_CONNECT_RETRIES(注意JNDI)实际上是第一步的参数!它定义了用于联系 JNDI 的#retries。如果您想要更改加载的 JMS ConnectionFactory 的定义,您需要在 Solace 管理员中执行此操作。例如,在管理 GUI 中,如下所示。
关于java - 关于 Solace 属性何时有效的困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55385216/