0

我有一个单节点 ActiveMQ 实例,其中两个竞争消费者连接到一个主题。根据 JMS 2.0 规范共享主题订阅。共享订阅确实保证只有两个订阅者(使用相同的订阅名称)才能收到消息。但我注意到的是,它不能保证只有在第一条消息被确认时才会传递第二条消息。如果第一个消费者需要时间来确认消息,则即使在消费者将第一个消息的确认发送给代理之前,第二个消息也会传递给免费消费者。这是标准行为吗?有没有办法阻止代理在确认第一条消息之前传递第二条消息?

4

1 回答 1

1

ActiveMQ Artemis 允许排他队列。它们是特殊的队列,一次只将所有消息路由到一个消费者。显然,独占队列有一个缺点,即您无法扩展消费者以改善消费,因为从技术上讲,只有一个消费者是活跃的。

但是,我建议查看消息分组以扩展您的解决方案。当您希望由同一使用者串行处理具有特定属性值的所有消息而不停止将具有不同属性值的消息传递给其他使用者时,消息组很有用。

于 2021-03-11T07:51:00.413 回答