【问题标题】:Fetch message from ActiveMQ queue without dequeueing从 ActiveMQ 队列中获取消息而不出队
【发布时间】:2012-12-04 01:48:51
【问题描述】:

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

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

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

是否有从队列中取或从队列中擦除等原子操作?

谢谢。

【问题讨论】:

    标签: java jms activemq


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2013-12-13
        • 2016-10-23
        • 2015-09-13
        • 2017-11-06
        • 2010-09-19
        • 2018-11-30
        • 2021-11-25
        • 1970-01-01
        • 2018-09-28
        相关资源
        最近更新 更多