【发布时间】:2012-05-07 01:01:38
【问题描述】:
在 apache camel 中,哪一个是将值从交换处理器传递到另一个(以及为什么)的最佳方式:
- 将其存储在交换标头中
- 在构建路线时使用
setProperty方法。 - 另一种方式..
【问题讨论】:
标签: apache-camel
在 apache camel 中,哪一个是将值从交换处理器传递到另一个(以及为什么)的最佳方式:
setProperty 方法。【问题讨论】:
标签: apache-camel
答案在这里:
属性:属性是一个地图,可能看起来像消息 标题。主要区别在于它们的生命周期:属性存在于整个 交换执行,而标头仅限于消息持续时间(以及 消息在路由期间可能会发生很大变化,因此在交换执行期间)。骆驼 本身可能会为某些用例添加一些属性。
【讨论】:
Ben 和 Petter 没有提到的一个区别是,在 Camel 中处理消息的整个过程中,属性都是安全存储的。相反,标头是消息协议的一部分,并且可能不会在路由期间传播。例如,JMS 对您可以存储为标题等的内容有限制。
您可能想阅读 Camel in Action 书籍的免费第 1 章,因为它涵盖了 Exchange、Message 等的 Camel 概念。
【讨论】:
marshal().xstream() 序列化正文中的 Map。
属性和标题几乎相同。但是,标头在某些组件(例如 Jms)上转换为/从特定于协议的标头转换。所以,
【讨论】:
Exchange 在处理器之间传递。它包含属性、IN 消息和可选的 OUT 消息。它们中的每一个都能够存储对象数据,但一般来说:
也就是说,这实际上取决于在您的处理器之后调用的组件。大多数都有一些使用端点等所需的标头和/或正文值。有关这些详细信息,请参阅特定的component page。
此外,在这些页面上更详细地解释了交换/消息:
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
【讨论】: