有什么方法可以强制使用JMS消息选择器?

时间:2019-04-18 08:17:08

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

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

逻辑是用本机JMS编写的,并使用ActiveMQ实现部署在JBOSS7上。

这取决于选择器,以将消息传递给正确的客户,尽管我可以对同事表示诚意,但我最好强制使用选择器,以使客户不会消耗不是故意的消息。为他们。

所以基本上,我希望没有消息传递给未指定选择器的客户端。

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

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

我已经看过但一直没有找到想要的东西,也许可以通过配置ActiveMQ本身来实现,但是我并不真正在这个生态系统中。

1 个答案:

答案 0 :(得分:0)

因此,可以使用我不了解的系统解决问题,我认为如果有人需要,我可以在这里共享它:

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

我按照在这里找到的指南,将窗外的窗户扔掉了,选择了一座桥:http://www.mastertheboss.com/howto/jboss-jms6/configuring-jms-bridge-with-wildfly-10

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

在实现这一点上我会很困难。