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