第 7 章 消息结构
摘要
消息构建模式描述了通过系统传递的消息的各种形式和功能。
7.1. correlation Identifier
概述
关联标识符 模式(如 图 7.1 “correlation Identifier Pattern” 所示)描述了如何与请求消息匹配消息,因为异步消息传递系统用于实现请求关系协议。这种理念的意义是,应当使用唯一令牌生成请求消息,请求 ID 则标识请求消息和回复消息中应包括令牌,其关联 ID 包含匹配的请求 ID。
通过在消息上获取或设置标头,Apache Camel 支持来自 EIP 模式的 Correlation Identifier。
在使用 ActiveMQ 或 JMS 组件时,关联标识符标头称为 JMSCorrelationID
。您可以将自己的关联标识符添加到任何消息交换中,以帮助在单个对话(或业务流程)中关联消息。相关标识符通常存储在 Apache Camel 消息标头中。
有些 EIP 模式关闭子消息,在这样的情形中,Apache Camel 为交换添加关联 ID,作为密钥 Exchange.CORRELATION_ID
的属性,链接回源交换。例如,拆分 器、多播、接收方列表 和 有线 tap EIP 执行此操作。
图 7.1. correlation Identifier Pattern
![correlation 标识符模式](https://access.redhat.com/webassets/avalon/d/Red_Hat_Fuse-7.9-Apache_Camel_Development_Guide-zh-CN/images/f8e96529eac5ef784c4fa6a589279c8b/correlation_identifier.gif)
事件消息
Camel 通过支持 消息中的 Exchange Pattern 来支持企业集成模式 的事件 消息,该消息 可以设置为" 仅限 "表示单向事件消息。Camel Apache Camel 组件参考,然后使用底层传输或协议实施此模式。
![事件消息解决方案](https://access.redhat.com/webassets/avalon/d/Red_Hat_Fuse-7.9-Apache_Camel_Development_Guide-zh-CN/images/7d463c751bea03b1f4bd0c46269c33b9/event_message_solution.gif)
许多 Apache Camel 组件参考 的默认行为仅适用于 JMS、文件或 SEDA
明确指定(Only)
如果您使用默认为 InOut 的组件,您可以使用 pattern 属性覆盖端点 的消息交换 模式。
foo:bar?exchangePattern=InOnly
在 Camel 上,从 2.0 开始,您可以使用 DSL 指定 消息交换模式。
from("mq:someQueue"). inOnly(). bean(Foo.class);
或者您可以使用显式模式调用端点
from("mq:someQueue"). inOnly("mq:anotherQueue");
<route> <from uri="mq:someQueue"/> <inOnly uri="bean:foo"/> </route>
<route> <from uri="mq:someQueue"/> <inOnly uri="mq:anotherQueue"/> </route>