我目前正在测试JMS队列(第一次使用JMS)和消息驱动的bean。我创建了一个队列,为其他应用程序提供其中一个项目的状态更新。
Logic是用本机JMS编写的,使用ActiveMQ实现部署在JBOSS7上。
它取决于选择器将消息传递给正确的客户端,虽然我可以真诚地对待我的同事,但我最好强制使用选择器,这样客户端就不会消耗不适合他们的消息。
所以基本上我更希望没有消息传递给没有指定选择器的客户端。
当我部署没有任何选择器的消费者时,它只消耗队列中可用的所有消息。
否则一切都按预期工作。
我已经看过并且找不到任何我正在寻找的东西,也许它可以通过配置ActiveMQ本身来实现,但我并不是真的在那个生态系统中。
因此,通过使用我不了解的系统来解决问题,如果有人需要,我认为我会在这里分享:
JMS客户端位于不同的物理机器上,因此最初的计划是进行手动JNDI远程查找以访问队列,但这会导致一些问题。当队列不可用时,主要是必须编写重试逻辑。
我把那个计划扔出窗外,选择了一个桥,而不是按照这里的指南:http://www.mastertheboss.com/howto/jboss-jms6/configuring-jms-bridge-with-wildfly-10
这有多个优点(生产者系统或客户端都可以关闭而不会导致太多问题)但最明显的是这解决了我的问题:我可以在每个客户端的桥上定义一个选择器。所以选择谁接收哪些消息的责任又回到了我的法庭。
我将很难实现这一点。