第 5 章 消息传递系统
摘要
本章介绍了消息传递系统的基本构建块,如端点、消息通道和消息路由器。
5.1. 消息
概述
消息 是在消息传递系统中传输数据的最小单元(由下图中的 grey 点表示)。消息本身可能有一些内部结构的构建时间(例如,包含多个部分在 图 5.1 “Message Pattern” 中与 grey dots 相关的 geometrical figures 所代表的信息)。
图 5.1. Message Pattern
消息类型
Apache Camel 定义了以下不同消息类型:
- 在消息 的 方式中,消息从消费者端点传输到制作者端点(通常是发起消息交换)的路由。
- out 消息 的 方式-将消息从制作者端点回发到消费者端点(通常是响应 In 消息)。
所有这些消息类型都由 org.apache.camel.Message
接口内部表示。
消息结构
默认情况下,Apache Camel 将以下结构应用到所有消息类型:
- 标头 TOKEN-IMG Contains 元数据或标头数据从消息中提取。
- body objectClass - 以其原始形式默认包含整个消息。
- Attachments ALLOW Message attachments (需要与某些消息传递系统(如 JBI)集成。
请记住,需要记住此部门到标头、正文和附件中是消息的抽象模型。Apache Camel 支持许多不同的组件,它们生成了大量消息格式。最终,这是决定将什么放入消息的标头和正文的底层组件实现。
关联消息
在内部,Apache Camel 记得消息 ID,用于关联各个消息。但是,在实践中,Apache Camel 与消息关联的最重要的方法是通过 交换 对象。
Exchange objects
Exchange 对象是封装相关消息的实体,其中相关消息的集合被称为 消息交换,并且管理消息序列的规则被称为 交换模式。例如,两种常见的交换模式是:单向事件消息(消息中)和请求交换(连接 In 消息),后跟一个 Out 消息。
访问消息
在 Java DSL 中定义路由规则时,您可以使用以下 DSL 构建器方法访问消息的标头和正文:
-
标头(字符串名称)
,body ()
EOF-mediationAction 返回命名标头和当前 In 消息的正文。 -
outBody ()
WWN-mediationAction 返回当前 Out 消息的正文。
例如,要填充 In message 的用户名
标头,您可以使用以下 Java DSL 路由:
from(SourceURL).setHeader("username", "John.Doe").to(TargetURL);