2013-03-13 44 views
-1

假设我有几个连接到相同队列的消费者。来自一个ActiveMQ队列的几个消费者

我的业务逻辑是:从队列中取一条消息,执行一些逻辑操作,如果该操作成功,则确认此消息(作为客户端确认)。

我的问题是,如果其中一个消费者逻辑失败并且不返回对该消息的确认会发生什么情况。

当消息仍在被消费者处理时,是否有将此消息发送给其他消费者的风险?

是否有某种超时之后,线程将此消息释放回队列?

回答

3

消息以循环方式分派给消费者以排队消费者。如果消费者失败并且它在Broker处理的消息没有被确认,那么一旦Broker检测到消费者连接失败,它就会将消息放回到队列中,使其可以由另一个连接的消费者处理。

也可以为一个消息配置一组设置的最大重新传送次数,以便在某个点后它将被放置在死信队列中。

相关问题