第 5 章 消息传递系统
摘要
本章介绍了消息传递系统的基本构建块,如端点、消息传递通道和消息路由器。
5.1. 消息
概述
消息 是在消息传递系统中传输数据的最小单元(由下图中的问候点表示)。例如,消息本身可能有一些内部结构,例如,包含多个 parts iwl-setuptools 的消息由附加到 图 5.1 “消息模式” 中的 grey dot 的 geometrical figures 表示。
图 5.1. 消息模式
消息类型
Apache Camel 定义以下不同的消息类型:
- 在消息 中,通过从消费者端点传输到生成者端点的路由(通常是启动消息交换)的消息中,消息会通过一个路由进行传输。
- 出去 消息:消息:从生成者端点传输到消费者端点(通常,响应 In 消息),该消息从生成者端点传输到消费者端点。
所有这些消息类型都由 org.apache.camel.Message
接口在内部表示。
消息结构
默认情况下,Apache Camel 将以下结构应用到所有消息类型:
- headers wagon-wagon Contains 元数据或标头数据从消息中提取。
- body ProductShortName-ProductShortName Usually 以原始的形式包含整个消息。
- attachments criu-categories 消息附加(需要与某些消息传递系统集成,如 JBI)。
务必要记住,这个划分成标头、正文和附加是消息的一个抽象模型。Apache Camel 支持许多不同的组件,它们生成各种消息格式。最终,它是底层的组件实现,决定将什么放置在消息的标头和正文中。
更正信息
在内部,Apache Camel 会记住消息 ID,用于关联各个消息。但是,在实践中,Apache Camel 关联消息的最重要方法是通过 交换 对象。
Exchange 对象
Exchange 对象是一种封装相关消息的实体,其中相关消息的集合称为 消息交换,以及管理消息序列的规则被称为 交换模式。例如,两种常见的交换模式是:单向事件消息(包含 In 消息)和 request-reply 交换(包含 In 消息,后跟 Out 消息)。
访问消息
在 Java DSL 中定义路由规则时,您可以使用以下 DSL 构建器方法访问消息的标头和正文:
-
header (String name)
,body ()
mvapich-wagon returns named 标头和当前 In 消息的正文。 -
outBody ()
criu- iwl returnss current Out 消息的正文。
例如,要填充 In 消息 的用户名
标头,您可以使用以下 Java DSL 路由:
from(SourceURL).setHeader("username", "John.Doe").to(TargetURL);