ActiveMQ:虚拟队列的新消费者接收已经消费的消息

问题描述 投票:0回答:1

我不了解虚拟主题在同一虚拟目的地的消费者上下波动的情况下的行为:

工作流程/情况

  1. 创建虚拟话题 => Virtual.A
  2. 创建虚拟队列的Consumer1(“Consumer group 1”)=> Consumer.CG1.Virtual.A
  3. 创建 Producer1 并将消息发送到 Virtual.A => Message1
  4. Consumer1 接收并确认 Message1
  5. 关闭消费者1
  6. 创建 Consumer2 到虚拟队列(“Consumer group 1”)=> Consumer.CG1.Virtual.A

观察到的行为

  • Consumer2再次收到Message1
  • 如果有多个消息,Consumer2接收所有消息
  • 如果 Consumer2 在 Consumer1 还在运行时创建,它仍然会收到所有消息

期待

我本以为同一个虚拟队列的新消费者只会收到新消息,而不是全部再次接收。

问题

  • 我正在寻找解释或参考文档来解释该特定行为。
  • 有没有办法阻止这种行为,让ActiveMQ只发送虚拟队列未消费的消息?
  • 最近的历史有多大?它会永远是虚拟主题仍然存在的一切吗?

提前致谢。

jms activemq
1个回答
0
投票

这与配置问题有关。

会话设置为 CLIENT_ACKNOWLEDGE,但消费者不尊重标志。

修复此问题后,行为符合预期:仅不确认消息发送给新消费者。

© www.soinside.com 2019 - 2024. All rights reserved.