我有关于重新传递邮件的问题。ActiveMQ和redelivery
的设置如下:
两个AMQ实例AMQ1和AMQ2(版本5.10.0)在主/从配置中运行(其中AMQ1是主站)和两个消费者A和B由相同的队列取出问:客户端被配置为使用ActiveMQSession.INDIVIDUAL_ACKNOWLEDGE,并且它们坐在循环提取(拉模式)消息中,没有确认任何消息。
测试用例:
- 发送持久消息到队列Q.
- 该消息由A.
- 停止AMQ1消耗,这带来了AMQ2。现在
,两种情况之一发生:
一)消费者再次接收到该消息导致该消息被放在死信队列。 b)消费者B收到消息,现在A和B都有相同的消息。
在a)我面对的问题是,如果A崩溃的消息丢失。在b)问题是,现在两个消费者采取相同的信息。
是否有可能配置AMQ以跟踪重新连接使用者,因此如果它发现它已经存在于某些消费者中,它不会重新发送消息?至少应该有a)的方法来避免将消息放入DLQ中?
谢谢!
您是否有理由等待确认您的消息?如果你不告诉经纪人你已经处理了这封邮件,它将在邮件恢复时尝试重新发送邮件。我很惊讶你看到了行为a),但b)对你所描述的内容非常期待。 – Tim 2014-10-21 00:35:44
@Tim我正在处理需要几分钟才能完成的消息。我将最终确认这个消息,但在此过程中重新启动AMQ将导致我的问题中描述的测试用例。 – garfen235 2014-10-21 08:07:20
好的,根据你的描述,听起来好像你的消费者会在不承认第一条消息的情况下拉第二条(和第三条,第四条等)消息。感谢您的澄清。 – Tim 2014-10-21 15:49:45