You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Apache Camel 2.18.1.redhat-000021中CamelRedeliveryCounter不再增长是否为Bug?

关于Apache Camel 2.18.1.redhat-000021重投递次数异常的问题

我之前在社区讨论和Red Hat客户论坛里看到过其他用户遇到完全相同的问题——在这个特定的Red Hat定制Camel版本中,不管路由里设置的maximumRedeliveries值是多少,失败后只会重试两次,CamelRedeliveryCounter计数到2就不再增长。

结合用户反馈和实际排查经验,整理几个关键点供你参考:

1. 版本特殊性导致的已知Bug

这个Red Hat定制的2.18.1版本存在重投递计数器的已知问题,尤其是当路由同时使用JMS和HTTP组件时(从你的日志片段能看到CamelJmsDeliveryMode和HTTP请求异常)。Red Hat在后续的小版本更新(比如2.18.1.redhat-000030及以上)中修复了这个Bug,不少用户升级后问题直接解决。

2. 组件级重投递配置冲突

如果你的路由同时配置了JMS组件的重投递策略和Camel路由的maximumRedeliveries,两者很可能会相互干扰。比如JMS默认的重投递次数是1,加上Camel路由的1次重试,就会出现总共两次重试的情况,此时CamelRedeliveryCounter到2就会停止递增。

建议你检查JMS连接工厂的redeliveryPolicy配置,确保和路由的重投递策略一致;或者显式在路由中覆盖组件的默认配置,示例代码如下:

from("jms:queue:yourTargetQueue")
    .errorHandler(deadLetterChannel("jms:queue:deadLetterQueue")
        .maximumRedeliveries(5) // 设置你需要的重试次数
        .redeliveryDelay(2000)
        .logRetryAttempted(true)
        .useOriginalMessage(true));

3. 日志参数的参考价值

从你提供的日志片段来看,CamelRedelivered = true说明消息已经被标记为重投递状态,结合CamelJmsDeliveryMode=2(持久化模式),大概率是JMS组件的重投递逻辑和Camel的全局重投递逻辑发生了冲突,导致计数器不再增长。

如果你暂时无法升级版本,可以尝试禁用JMS组件的自动重投递,完全交由Camel的错误处理器来控制重试逻辑。

内容的提问来源于stack exchange,提问作者Shoaib Khan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 08:04:34