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

Apache Camel Timer组件配置period参数触发属性绑定报错

问题根因

Apache Camel 从3.12.0版本开始重构Timer组件底层实现,将period参数的类型从原有long型(默认单位为毫秒)调整为java.time.Duration类型,同期版本存在旧参数写法兼容缺陷:当直接传入小于100的纯数字作为period参数值时,内置的Duration类型转换器无法完成值解析,直接抛出属性绑定异常。
该异常和路由中配置的exchangePattern、repeatCount参数无关,移除period参数后路由可正常启动是因为组件会 fallback 到默认值1000ms(即1秒间隔触发),不符合预期的10ms触发需求。

解决方案
  • 即时修复:给period参数显式标注时间单位,避免传入无单位纯数字,修改后的路由代码如下:
from("timer://firsttimer?period=10ms&exchangePattern=InOnly&repeatCount=100")
        .bean(SecondBean.class, "pubMessage");

配置为period=10ms后,类型转换器可直接将值解析为对应10毫秒的Duration实例,不会触发转换bug,路由可正常按预期间隔执行。

  • 长期修复:将Apache Camel升级至3.18.1及以上的3.x稳定版本,官方在该版本补全了Duration类型参数对纯数字毫秒值的兼容逻辑,直接写period=10也可被正常识别。
  • 配置提示:10ms的触发间隔极短,如果pubMessage方法存在阻塞逻辑,很容易出现Exchange堆积问题,实际使用时建议根据业务逻辑评估是否需要添加fixedRate=true参数,或是将触发间隔调整到合理范围。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 18:36:51