我试图在我的应用程序中使用 ActiveMQ 5.8.0 消息组,但在阅读文档后没有得到预期的结果。
我为特定队列启动两个(或更多)消费者,然后将消息发送到队列。在生产者的 createMessage 方法中,我使用的是:
message.setStringProperty("JMSXGroupID", "foo");
设置 GroupID。请注意,出于测试目的,我对“foo”进行了硬编码。它最终将是生产者设置的字符串。
由于我的消息中只设置了一个消息组,我希望看到一个消费者会变得活跃并消费队列中的所有消息,而另一个消费者将保持静止。
相反,我看到第一个消费者处理了第一条消息,然后在第一个消费者完成后,第二个消费者处理了第二条消息。消费者继续以这种方式轮流,直到所有的消息都被消费完。
这是预期的行为,还是我需要在 ActiveMQ 或我的生产者或消费者上进行一些额外的配置,以确保每个 GroupID 都与单个消费者相关联。