4

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

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

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

是否有原子操作,例如从队列中获取或从队列中擦除?

谢谢。

4

2 回答 2

7

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

于 2012-11-27T10:21:30.150 回答
2

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

于 2012-12-03T13:56:03.563 回答