第 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
事件消息
Camel 通过支持 消息中的 Exchange Pattern 来支持企业集成模式 的事件 消息,该消息 可以设置为" 仅限 "表示单向事件消息。Camel Apache Camel 组件参考,然后使用底层传输或协议实施此模式。
许多 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>