第 7 章 消息结构
摘要
消息构建模式描述了通过系统传递的消息的各种形式和功能。
7.1. 关联标识符
概述
图 7.1 “关联标识符模式” 中显示的 关联标识符 模式描述了如何将回复消息与请求消息匹配,因为异步消息传递系统用于实现请求回复协议。这种理念表明,请求消息应该生成唯一的令牌,请求 ID 则标识请求消息和回复消息应包括令牌、关联 ID,其中包含匹配的请求 ID。
Apache Camel 通过获取或设置消息上的标头来支持来自 EIP 模式的 Correlation 标识符。
使用 ActiveMQ 或 JMS 组件时,关联标识符标头称为 JMSCorrelationID
。您可以将自己的关联标识符添加到任何消息交换中,以帮助在单个对话(或业务流程)中关联消息。关联标识符通常存储在 Apache Camel 消息标头中。
有些 EIP 模式会启动子消息,在这种情况下,Apache Camel 将关联 ID 添加到 Exchanges,作为带有其密钥 Exchange.CORRELATION_ID
的属性,它链接到源交换。例如,拆分器、多播、接收者列表 和 wire tap EIPs 执行此操作。
图 7.1. 关联标识符模式
事件消息
Camel 通过支持 消息 上的 Exchange Patterns 支持企业集成模式 中的事件消息,该消息 可设置为 InOnly 来指示单向事件消息。Camel Apache Camel 组件参考 然后使用底层传输或协议实施此模式。
许多 Apache Camel 组件参考的默认行为是 In Only,如 JMS、File 或 SEDA
明确指定 InOnly
如果您使用组件,默认为 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>