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

关于CamelCreatedTimestamp属性的替代方案及原内容咨询

关于Apache Camel中CamelCreatedTimestamp属性的替代方案说明

属性定义与废弃背景

  • CamelCreatedTimestamp是Apache Camel早期版本中自动绑定到Exchange实例的属性,存储的是Exchange创建时刻的毫秒级Epoch时间戳,类型为Long,作用是标记消息进入Camel路由链的初始时间点。
  • 该属性在后续版本中被移除,官方未提供直接对应的内置替代属性,核心原因是Camel的Exchange生命周期管理逻辑优化,转而推荐用户按需自定义时间戳属性。

等价替代实现

没有官方1:1匹配的内置属性,但可以通过两种方式实现完全等价的功能:

方式一:直接调用Exchange的内置方法

Camel保留了获取Exchange创建时间的API,你可以通过getExchangeCreated()方法拿到java.util.Date类型的创建时间,再转为毫秒级Long值,和原CamelCreatedTimestamp的数值格式完全一致:

// 等价于原CamelCreatedTimestamp的数值
Long createdTimestamp = exchange.getExchangeCreated().getTime();

方式二:自定义全局注入属性

如果需要和旧代码逻辑完全对齐(直接通过getProperty获取同名属性),可以添加全局拦截器,给每个Exchange自动注入该属性:

// 在路由配置中添加全局拦截
from("direct:your-start-endpoint")
    .intercept()
        .setProperty("CamelCreatedTimestamp", simple("${exchange.created.time}"))
    .end()
    // 后续路由处理逻辑
    .to("your-target-endpoint");

这种方式能让所有经过路由的Exchange都拥有CamelCreatedTimestamp属性,完全兼容旧代码的取值逻辑。

日期/时间比较的注意事项

如果你的场景是基于该时间戳做日期比较,需要注意两点:

  • 时区一致性:原CamelCreatedTimestamp使用UTC时区的Epoch时间,新生成的时间戳也要保持同一基准,避免比较结果出错
  • 类型一致性:确保新生成的属性值为Long类型,和原属性的类型完全匹配,不要使用Integer或其他数值类型

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 10:50:26