我正在使用ActiveMQ应用程序,iam使用使用Session.CLIENT_ACKNOWLEDGE的消费者。
我将从消费者队列收到的消息发送到webservice.Assume如果我不做message.acknowledge(),发送到webservice的所有消息都会以排队状态返回队列。
我的问题是如何从队列中再次检索邮件并使用它。我使用 retroactive = true 并尝试重新传递,但所有邮件都失败了。< / p>
如何避免这种情况。
答案 0 :(得分:0)
如果您使用message.acknowledge()
所有消费的消息在同一个队列中不再可用,因为它们被视为已发送!
你能解释为什么你需要再次消费已经消耗的消息。 追溯适用于离线和启动连接以接收连接前发送的邮件的消费者。
在这种情况下,您需要将使用者的预取策略设置为400。 您可以阅读以理解概念http://activemq.apache.org/what-is-the-prefetch-limit-for.html
如果您想要使用计数器逐个处理邮件,则需要将预取设置为1,并在处理200时确认每封邮件,但您不会确认。