第 3 章 企业集成模式简介
摘要
通过 Gregor Hohpe 和 Bobby Woolf 编写的相同名称的书中,Apache Camel 的企业集成模式 得以激发。这些作者描述的模式为开发企业集成项目提供了卓越的 toolbox。除了为讨论集成架构提供通用语言外,许多模式还可直接使用 Apache Camel 的编程界面和 XML 配置来实施。
3.1. Patterns 概述
企业集成模式书
Apache Camel 通过 Gregor Hohpe 和 Bobby Woolf 支持《企业集成模式》中的大多数模式。
消息传递系统
消息传递系统模式(如 表 3.1 “消息传递系统” 所示)介绍了构成消息传递系统的基本概念和组件。
图标 | Name | 使用案例 |
---|---|---|
| 邮件频道连接的两个应用程序会交换信息? | |
| 个应用如何使用消息传递与另一个应用程序通信? | |
| 应用程序如何连接到消息传递频道以发送和接收信息? | |
| 我们如何对消息执行复杂的处理,同时保持独立性和灵活性? | |
| 您如何分离个别处理步骤,以便根据一组定义的条件将消息传递到不同的过滤器? | |
| 使用不同数据格式的系统如何使用消息传递相互通信? |
消息传递频道
消息传递频道是用于连接消息传递系统中参与者的基本组件。表 3.2 “消息传递频道” 中的模式描述了可用的不同类型的消息频道。
图标 | Name | 使用案例 |
---|---|---|
| 调用者如何确定一个接收器将接收文档或执行调用? | |
| 发件人如何将事件广播到所有感兴趣的接收器? | |
| 消息传递系统通过消息进行哪些操作无法交付? | |
| 发件人如何确保消息发送,即使消息传递系统失败也是如此? | |
| 是什么架构使分离的应用程序协同工作,以便在不影响他人的情况下添加或删除一个或多个应用程序的架构? |
消息构建
消息构建模式显示在 表 3.3 “消息结构” 中,描述通过系统传递的消息的各种形式和功能。
图标 | Name | 使用案例 |
---|---|---|
| 请求者如何识别生成接收回复的请求? | |
| replier 如何知道如何发送回复? |
消息路由
消息路由模式(如 表 3.4 “消息路由” 所示)描述了将消息通道连接在一起的各种方式,包括可应用于消息流的各种算法(无需修改消息正文)。
图标 | Name | 使用案例 |
---|---|---|
| 我们如何处理在一个逻辑功能(例如清单检查)分布到多个物理系统中的一种逻辑函数实现的情况? | |
| 组件如何避免接收不间断的信息? | |
| 如何将消息路由到动态指定收件人列表? | |
| 如果文件包含多个元素,则我们如何处理消息,每个元素必须以不同的方式进行处理? | |
| 我们将如何组合单个结果,但相关的消息以便将它们作为一个整体进行处理? | |
| 如何才能得到相关流,但未排序、消息返回正确的顺序? | |
| 在处理由多个元素组成的消息时,如何维护整个消息流,每个消息可能需要不同的处理? | |
当消息需要发送到多个收件人时,如何维护整个消息流,每个消息都可以发送回复? | ||
| 在设计时,我们如何连续地通过一系列处理步骤对消息进行路由,每个步骤都不同? | |
如何调整消息,以确保特定的端点没有超载,或者我们不超过使用某些外部服务的协议的 SLA? | ||
如何延迟邮件的发送? | ||
如何在多个端点之间平衡负载? | ||
在调用外部服务时,如何使用 Hystrix 断路器?Camel 2.18 中的新功能. | ||
如何通过在注册表中查找该服务,在分布式系统中调用远程服务?Camel 2.18 中的新功能. | ||
如何同时将消息路由到多个端点? | ||
如何在循环中重复处理消息? | ||
在给定时间段内如何显示一条消息,以避免出现下游路由的问题? |
消息转换
消息转换模式(如 表 3.5 “消息转换” 所示)描述了如何根据各种目的修改信息内容。
图标 | Name | 使用案例 |
---|---|---|
| 如果消息源器没有所有需要的数据项,则我如何与其他系统通信? | |
| 当您只对一些数据项感兴趣时,如何简化处理大型消息? | |
| 如何在不牺牲信息内容的情况下减少系统中发送的消息数据卷? | |
| 您如何处理语义等效的消息,但会采用不同的格式? | |
如何对邮件正文进行排序? |
消息传递端点
消息传递端点表示消息传递通道和应用程序间的联系点。消息传递端点模式(如 表 3.6 “消息传递端点” 所示)描述了端点上可以配置的各种功能及服务数量。
图标 | Name | 使用案例 |
---|---|---|
您如何在域对象和消息传递基础架构之间移动数据,同时保持两个相互独立的数据? | ||
| 应用程序如何在消息可用时自动使用消息? | |
| 应用在应用就绪时如何消耗消息? | |
| 消息传递客户端如何同时处理多个消息? | |
| 单个渠道中的多个消费者如何协调其消息处理? | |
| 消息使用者如何选择它要接收的消息? | |
| 订阅者如何避免在未侦听邮件时丢失的信息? | |
消息接收器如何处理重复的信息? | ||
| 客户端如何使用消息传递系统控制其事务? | |
| 您如何封装从应用的其余部分中对消息传递系统的访问? | |
| 应用程序如何设计各种消息传递技术以及非消息传递技术需要调用的服务? |
系统管理
系统管理模式(如 表 3.7 “系统管理” )介绍了如何监控、测试和管理消息传递系统。
图标 | Name | 使用案例 |
---|---|---|
| 如何检查到达点对点频道的消息? |