3

我们有一个监听消息队列的应用程序,我知道 dmlc 提供了一个 sessionTransacted 属性,我假设它允许我们手动提交消息接收事件,但是我不确定如何在监听器中利用它。

似乎只要抛出一个 RuntimeException 消息就会被放回队列中,如果没有设置 ErrorHandler 但我们想专门提交接收,则进入循环。

例如

public class JMSMessageListener implements MessageListener {

    @Override
    public void onMessage(Message message) {
       // do something with the message and then manually commit
    }
}
4

1 回答 1

2

A 有使用 ActiveMQ 的经验。启用时sessionTransacted,如果您的应用程序在 中意外关闭onMessage,该消息将在重新启动后再次处理。如果会话没有被处理,它将丢失。

您不能使用sessionTransacted. 您可能想看看SessionAwareMessageListener,尽管我从未尝试过。

于 2011-04-07T20:57:01.590 回答