gpt4 book ai didi

jms - Camel 、JMS、CLIENT_ACKNOWLEDGE 模式

转载 作者:行者123 更新时间:2023-12-04 06:05:58 32 4
gpt4 key购买 nike

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

或者我可以以某种方式根据我的意愿确认消息吗?

我想避免消息丢失的情况,因为我的应用程序在处理这些消息的过程中崩溃了,并且使其事务性对我来说似乎有点太重了

最佳答案

好的。经过一些调试和扫描源代码后,我发现 Camel 使用 spring MessageListenerContainers。 AbstractMessageListenerContainer,在 CLIENT_AKNOWLEDGE 模式的情况下,调用comitIfNecessary 方法确认消息。仅在注册的 MessageListener 成功处理消息后才会发生这种情况(无异常)

Camel 使用 EndpointMessageListener ,它最终会调用下一个处理器(或生产者)的处理方法。由于这是典型的职责链,如果路由中的任何处理器在 Exchange 上抛出异常或设置异常,EndpointMessageListener 将重新抛出它,阻止 AbstractMessageListener 确认消息。

关于jms - Camel 、JMS、CLIENT_ACKNOWLEDGE 模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13498652/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com