从ActiveMQ队列中获取消息而不会出列

时间:2012-11-27 10:18:37

标签: java jms activemq

我从ActiveMQ队列中获取消息并运行可以成功或失败的Java应用程序。

如果应用程序失败,我希望消息保留在队列中,即保留它而不会使其出列。

有没有办法在没有从队列中自动删除消息的情况下收到消息?

是否有像从队列中取出或从队列中删除的原子操作?

感谢。

2 个答案:

答案 0 :(得分:6)

禁用消息的自动确认,然后在完成工作后手动调用message.acknowledge()。如果抛出异常并因此未调用message.acknowlege(),则AMQ将尝试再次传递消息。如果所有尝试都失败,则消息最终放在死信队列中。可以配置此行为。

答案 1 :(得分:2)

另一种方法是使用QueueBrowser。这允许您“查看队列中的消息而不删除它们”。 但是,这对于检查来说更有用,从你描述的语义来看,mbelow的答案似乎是正确的选择。