骆驼,JMS,CLIENT_ACKNOWLEDGE模式 [英] camel, JMS, CLIENT_ACKNOWLEDGE mode

查看:108
本文介绍了骆驼,JMS,CLIENT_ACKNOWLEDGE模式的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我知道Camel的JMS组件用于接收消息,它使用Springs DefaultMessageListenerContainer.可以将其配置为使用CLIENT_ACKNOWLEDGE模式来确认消息.我的问题是,何时精确调用message.acknowledge()方法?它是由Spring的监听器容器内部调用的吗?

I know that Camel's JMS component, for receiving messages, uses Springs DefaultMessageListenerContainer. It can be configured to use CLIENT_ACKNOWLEDGE mode for acknowledging messages. My question is, when exactly the message.acknowledge() method gets called? Is it called internally by the spring's listener container?

或者我可以以某种方式自愿确认消息吗?

Or can I somehow acknowledge message at my will?

我想避免出现消息丢失的情况,因为我的应用程序在处理这些消息时崩溃了,并且使它具有事务性对于我来说太重了

I'd like to avoid scenario that messages get lost because my app crashed during processing of these messages and making it transactional seems a bit too heavy for me

推荐答案

确定.经过一些调试和整个源代码扫描后,我发现Camel使用spring MessageListenerContainers.在CLIENT_AKNOWLEDGE模式下,AbstractMessageListenerContainer会调用comitIfNecessary方法确认消息.只有在注册的MessageListener成功处理消息之后,这种情况才会发生(无例外)

OK. After some some debugging and scanning throug source code I've found out that Camel uses spring MessageListenerContainers. The AbstractMessageListenerContainer, in case of CLIENT_AKNOWLEDGE mode, invokes comitIfNecessary method acknowledging message. This happens only AFTER registered MessageListener processes message succesfully (no exceptions)

Camel使用EndpointMessageListener,它最终沿路径调用下一个处理器(或Producer)的处理方法.由于这是经典的责任链,因此如果路由下游的任何处理器在Exchange上引发异常或设置异常,它将被EndpointMessageListener重新抛出,从而阻止AbstractMessageListener确认消息.

Camel uses EndpointMessageListener which, eventually, invokes process method of next processor (or Producer) down the route. As this is classic chain of responsibilities, if any processor down the route throws exception or sets exception on the Exchange, it will be re-thrown by EndpointMessageListener preventing the AbstractMessageListener to acknowledge message.

这篇关于骆驼,JMS,CLIENT_ACKNOWLEDGE模式的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆