2012-04-26 190 views
19

处理器之间传递值在apache的骆驼,其中那些的是从交换处理器到另一个(和为什么)传递值的最佳方式:在阿帕奇骆驼

  • 其存储在交换报头
  • 在建立路线时使用setProperty方法。
  • 另一种方式..

回答

22

属性和头都几乎相同。但是,标题可以转换为某些组件(如Jms)上的协议特定标题。所以,

  • 的路线内的元数据:性能
  • 元数据/外部:不是Ben和皮特提到的头
16

Exchange在处理器之间传递。它包含属性,IN消息和可选的OUT消息。每个这些能够存储对象的数据,但在一般情况:

  • 使用Exchange属性有关该消息的一般的元数据(不经常使用的)
  • 使用IN消息头配置端点属性或用于关于消息正文的元数据(经常使用)
  • 对消息的有效负载使用IN消息正文(最常使用)
  • 仅在必要时才会创建OUT消息,以便在期间保持单独的IN和OUT消息处理(默认情况下仅使用IN)

这就是说,它确实取决于处理器之后的组件。大多数都有一些使用端点所需的标题和/或正文值等。有关这些详细信息,请参阅具体的component page

此外,Exchange /信息进行了更详细在这些网页上解释说:

http://camel.apache.org/maven/current/camel-core/apidocs/org/apache/camel/Exchange.html

http://fusesource.com/docs/router/2.8/prog_guide/MsgFormats-Exchanges.html

39

一个区别是性能安全存储的整个期间,在骆驼中处理消息。相反,头部是消息协议的一部分,并且在路由期间可能不会传播。例如,JMS也有局限性你可以存储为标题等

您可能需要为它涵盖了骆驼概念与Exchange,消息等来读取骆驼的行动书的免费章节1

+10

+ 1这是一个重要的区别。一般来说,如果你想确定你所设置的数据会在你想要的地方结束,那么我强烈建议你使用这些属性。过去,我被烧毁了,有人在一条路径的中间添加了一个JMS步骤,在这条路径中,我将信息存储在标题中,并且信息刚刚停止。 – 2012-08-05 22:11:20

+0

在JMS的情况下,属性根本不会传播,标题是推荐的传递日期。这不正确或我错过了什么? – 2014-05-11 23:09:45

+0

也许它的条款。 JMS body + properties是JMS条款。在骆驼上它的正文+邮件上的标题,以及Exchange上的属性。骆驼映射body - > body,和headers - > JMS属性。 – 2014-05-12 07:00:27