【发布时间】:2021-06-03 11:34:38
【问题描述】:
我有一个连接到多个 MQ 主机的 Java Spring/Boot 应用程序。我正在使用 JmsTemplate 发送消息,并且我正在尝试配置 JmsListeners 来接收消息。我有 2 个不同的问题。
为了发送消息,我想给 JmsTemplate 主机列表,并让它使用标准故障转移 - 使用第一个,如果它关闭,切换到第二个,等等。我遇到的问题是一旦发生故障转移,似乎没有尝试恢复到列表中的第一台主机。如何让应用程序检查第一台主机是否重新联机?
为了接收消息,我想为每个唯一的主机/返回队列组合创建一个侦听器,并同时让所有侦听器处于活动状态。主机和队列名称的数量是可变的。我可能可以使用一个队列,但我需要多个主机(我已经看到了 2 个主机的解决方案,但我需要“n”)。我可以使用 JmsListenerEndpointRegistrar 创建和注册监听器。问题是,似乎在幕后,侦听器正在使用我用于发送消息的 JmsTemplate,并且它正在使用故障转移行为 - 只有与第一个主机关联的侦听器处于活动状态,直到该主机关闭,然后与第二台主机关联的侦听器变为活动状态,等等。如何让所有侦听器同时激活?如果我可以将侦听器绑定到特定的 JmsTemplate,我想我可以做到这一点,但我不知道如何做到这一点。
【问题讨论】:
标签: java spring-boot jms ibm-mq spring-jms