【问题标题】:Does onCompletion() order matter in camel DSL?onCompletion() 顺序在骆驼 DSL 中是否重要?
【发布时间】:2012-04-16 21:56:23
【问题描述】:

我正在尝试在消息上设置一些标头,该消息在通过我的骆驼 DSL 中的处理器引用时被操纵。然而,我拥有的第一件事是.onCompletion 的处理器,它应该从交换中读取消息,获取标头并记录它们。

这必须在我的 DSL 中排在最后吗?看来我最后的 .process() 处理器可以看到我通过其余代码添加的所有新标头值,但是当我将它们全部记录在 .onCompletion 时,这些标头的值为空。这几乎就像它有一个过时的消息或交换或其他东西。为什么会发生这种情况?

【问题讨论】:

    标签: java activemq apache-camel


    【解决方案1】:

    是的,你应该配置类似的东西

    • 完成时
    • onException
    • 拦截
    • 错误处理程序
    • 已成交
    • 政策

    在您路线的开始。然而 DSL 是 Camel 2.x 非常开放,因此您可以在某些地方在其他地方配置它(例如,不在开始时)。但经验法则是首先做到这一点。然后,你的常规路线。

    旁注:请注意,Camel 还允许您在全局级别(也称为上下文范围)而不是路由配置这些类型。例如你可以有 上下文范围的错误处理程序。然后只在一条特殊的路线上 覆盖并有一个路由特殊错误处理程序。

    从 Camel 3.0 开始,我们将让 DSL 更加严格,所以我们在一开始就强制执行配置。这也减少了您在常规路线中的代码帮助列表(例如按 ctrl + 空格)中看到的方法数量。因为这些配置将不再列出。

    它们出现的原因是它们继承了同一个基类,这是 DSL 的基石。而且我们不想在当前的 2.x 行中打破这一点,因为那样有些人可能会受到影响。

    【讨论】:

      【解决方案2】:

      顺序无关紧要...当路线完成时,它应该使用 Exchange 的副本,无论如何...发布您的路线,我们也许可以提供更多帮助

      【讨论】:

        猜你喜欢
        • 2019-06-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-05-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多