我正在尝试在消息中设置一些标头,因为它通过我的camel DSL中的处理器引用。然而,我拥有的第一件事是.onCompletion的处理器,它应该从交换机读取消息,获取标题并记录它们。
这是否必须在我的DSL中排在最后?看来我的最终.process()处理器可以看到我通过其余代码添加的所有新标头值,但是当我将它们全部记录在.onCompletion时,这些标头的值为null。它几乎就像它有一个陈旧版本的消息或交换或其他东西。为什么会这样呢?
答案 0 :(得分:3)
是的,你应该配置像
这样的东西在路线的开始中。然而DSL是Camel 2.x是非常开放的,因此你可以在某些地方配置它在别处(例如不在开始)。但经验法则是首先要这样做。之后,你定期路线。
旁注:请注意,Camel还允许您在全局级别(也称为上下文范围)而不是路由上配置这些类型。你可以拥有 上下文范围的错误处理程序。然后只在一个特殊的路线 覆盖并具有路径特殊错误处理程序。
在Camel 3.0以后,我们将使DSL更加严格,因此我们在开始时强制执行配置。这也减少了您在常规路线中在代码帮助列表中看到的方法数量(例如,按ctrl + space)。因为这些配置将不再列出。
他们出现的原因是,他们在同一个基层,这是DSL的基石。而且我们不希望在当前的2.x线上打破这一点,因为有些人可能会受到影响。
答案 1 :(得分:0)
订单无关紧要......当路线完成时应该使用交易所的副本...不管发布你的路线我们可能会帮助更多