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