我对活动 MQ 有点陌生,所以请多多包涵。
我正在尝试为我的一些 Java 和 CPP 应用程序利用 ActiveMQ 优先级备份功能。我在两个不同的服务器(本地和远程)上有两个代理,我希望我的应用程序具有以下行为。
- 启动时始终连接到本地代理
- 如果本地代理出现故障,请连接到远程
- 在连接到远程时,如果本地恢复,我们然后重新连接到本地。
通过简单地将priorityBackup 添加到我的uri 选项,即故障转移:(tcp://local:61616,tcp://remote:61616)?randomize=false&priorityBackup=true
然而,在 CPP 方面,事情进展并不顺利。
以下在 CPP 应用程序上运行良好(具有基本的工作故障转移功能 - 也就是在本地出现故障时跳转到远程)
故障转移:(tcp://local:61616,tcp://remote:61616)?randomize=false
但是使用 priorityBackup 更新 uri 选项似乎完全破坏了故障转移功能(我的应用程序从不故障转移到远程代理,当他们的本地代理出现故障时,它们只是停留在某种无代理/边缘状态)故障转移:(tcp:// local:61616,tcp://remote:61616)?randomize=false&priorityBackup=true
我在这里有什么遗漏吗?我应该包括的额外 uri 选项?
更新:传输连接器信息
<transportConnectors>
<transportConnector name="ClientOpenwire" uri="tcp://0.0.0.0:61616?wireFormat.maxInactivityDuration=7000"/>
<transportConnector name="Broker2BrokerOpenwire" uri="tcp://0.0.0.0:62627?wireFormat.maxInactivityDuration=5000"/>
<transportConnector name="stompConnector" uri="stomp://0.0.0.0:62623"/>
</transportConnectors>