要求:一个activemq队列应该在一台机器上运行(比如machine1)。应该从machine1和另一台机器(比如machine2)访问该队列。并且监听器只能在machine1中运行。所以,我所有的消息发送到machine1和machine2应该进入机器1中的avaialble队列,并且应该由同一台机器(机器1)中的侦听器接收。
问题:我发送到machine1和machine2的所有消息都输入到队列中,但是监听器只接收备用消息。如果是1,3,5,则它不能接收消息2,4 .....
观察:假设在机器1和机器2中是否有正确接收的侦听器,即; machine1中的listenr接收1,3,5 .....并且machine2中的监听器接收2,4,6 ...........
答案 0 :(得分:2)
ActiveMQ默认使用RoundRobin发行版。因此,如果您解释说,您的队列中有2个消费者(machine1和machine2),则machine1将只收到一半消息。 即使您在machine2上没有进程处理消息,该主机上的ActiveMQ客户端也可能正在使用它们。 如果您希望2个客户端可以使用消息,则必须使用Topic而不是队列。
答案 1 :(得分:0)
我有一个类似的要求,我有多个生产者但只有一个消费者。使用队列似乎不符合要求,因为它似乎是以循环方式处理,虽然我已经注释掉所有的消息监听器服务器,除了一个应该做所有处理.Topic解决了这个问题,但不幸的是似乎没有办法我可以通过服务器重新启动主题数据持久性。任何帮助将不胜感激