Camel InterceptFrom行为

时间:2018-03-28 05:16:27

标签: apache-camel

轮询文件的路由有一个拦截器,如下所示。我们想知道处理的总时间。所以我们在标题中记录了startTime。 我们观察到startTime永远不会改变。此代码位于RouteBuilder :: configure方法中。然后我将代码移动到bean并从拦截器调用bean。想要更清晰,阅读拦截器上的骆驼文件,我仍然不清楚,为什么这不起作用

 interceptFrom()
                .setHeader("fileName",
                        regexReplaceAll(simple("${file:onlyname.noext.single}"),
                                "[^a-zA-z\\d]", ""))
                .setHeader("startTime", constant(System.currentTimeMillis()))

1 个答案:

答案 0 :(得分:2)

因为这个标题是constant,当路由是"构建"它在运行时永远不会改变。因此,对于处理的每条消息,它都保持相同的常量值。

请参阅Camel docs for constant。您无法使用它设置动态值。

但是@ claus-ibsen添加了一条评论,即已经有一个带有交换创建时间戳的消息头。你可以使用它。

simple("${in.header.CamelCreatedTimestamp}")