0

要求:一个 activemq 队列应该在一台机器上运行(比如 machine1)。应该从 machine1 和另一台机器(比如 machine2)访问该队列。监听器将只在 machine1 中运行。所以,我发送到 machine1 的所有消息并且 machine2 应该进入 machine1 中可用的队列,并且应该由同一台机器(machine1)中可用的侦听器接收。

问题:我发送到 machine1 和 machine2 的所有消息都进入队列,但侦听器只接收替代消息。假设 1、3、5 并且它无法接收消息 2、4 ... ..

观察:假设如果在 machine1 和 machine2 中有侦听器,它正在正确接收,即;machine1 中的侦听器接收 1、3、5 ..... 机器 2 中的侦听器接收 2、4、6 ......

4

1 回答 1

2

ActiveMQ 默认使用 RoundRobin 分发。因此,如果正如您所解释的,您的队列中有 2 个消费者(机器 1 和机器 2),机器 1 将只收到一半的消息。即使您在 machine2 上没有处理消息的进程,该主机上的 ActiveMQ 客户端也可能正在使用它们。如果您希望 2 个客户端可以使用您必须使用主题而不是队列的消息。

于 2013-05-16T12:19:34.430 回答