【问题标题】:Creating JMS/MQ templates and listeners for multiple hosts为多个主机创建 JMS/MQ 模板和侦听器
【发布时间】: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


    【解决方案1】:

    恕我直言,最好的办法是拥有一个 CCDT,并在 application.properties 中设置 ibm.mq.ccdtUrl 以指向 CCDT。

    查看 mq-jms-spring-boot-starter 的 GitHub 存储库主页以获取所有配置属性的列表 - https://github.com/ibm-messaging/mq-jms-spring

    通过使用 CCDT,您可以让底层 MQ Java 客户端代码执行故障转移。

    【讨论】:

      猜你喜欢
      • 2017-03-28
      • 2011-01-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-10
      • 2015-04-22
      相关资源
      最近更新 更多