【问题标题】:Is there any way to enforce the use of a JMS message selector?有没有办法强制使用 JMS 消息选择器?
【发布时间】:2019-09-08 13:02:26
【问题描述】:

我目前正在测试 JMS 队列(第一次使用 JMS)和消息驱动 bean。 我创建了一个队列,以便为其他应用程序提供我们其中一个项目的状态更新。

逻辑是用原生 JMS 编写的,使用 ActiveMQ 实现部署在 JBOSS7 上。

这取决于选择器将消息传递给正确的客户端,虽然我可以信任我的同事,但最好是我想强制使用选择器,这样客户端就不会消费无意中的消息为他们。

所以基本上我宁愿不向没有指定选择器的客户端传递任何消息。

当我部署一个没有任何选择器的消费者时,它只会消耗队列中所有可用的消息。

否则一切都会按预期进行。

我已经查看过并且无法找到我正在寻找的任何东西,也许可以通过配置 ActiveMQ 本身来实现,但我对那个生态系统并不熟悉。

【问题讨论】:

    标签: java jakarta-ee jms message-queue java-ee-7


    【解决方案1】:

    所以问题是通过使用我不太了解的系统解决的,我想如果有人需要我会在这里分享它:

    JMS 客户端位于不同的物理机器上,因此最初的计划是手动执行 JNDI 远程查找以访问队列,但这导致了一些问题。主要是在Queue不可用时必须编写重试逻辑。

    按照此处的指南,我将那个计划扔出窗外选择了桥:http://www.mastertheboss.com/howto/jboss-jms6/configuring-jms-bridge-with-wildfly-10

    这有多个优点(生产者系统或客户端都可以关闭而不会造成太多问题)但最值得注意的是这解决了我的问题:我可以在每个客户端的桥上定义一个选择器。因此,选择谁接收哪些信息的责任又回到了我的法庭上。

    我会努力实现这一点。

    【讨论】:

      猜你喜欢
      • 2020-06-01
      • 2012-09-08
      • 2011-08-10
      • 2012-02-03
      • 2015-11-05
      • 1970-01-01
      • 1970-01-01
      • 2013-06-14
      • 1970-01-01
      相关资源
      最近更新 更多