第 3 章 企业级集成模式简介


摘要

Apache Camel 的 Enterprise Integration Patterns 通过由 Gregor Hohpe 和 Bobby Woolf 编写的相同名称的一书来发发。这些作者描述的模式为开发企业集成项目提供了很好的 toolbox。除了提供用于讨论集成架构的通用语言外,许多模式也可以使用 Apache Camel 的编程界面和 XML 配置直接实施。

3.1. Patterns 概述

企业级集成模式 一书

Apache Camel 支持本书中的大多数模式,即 Gregor Hohpe 和 Bobby Woolf 的企业集成模式。

消息传递系统

消息传递系统模式(如 表 3.1 “消息传递系统” 所示)引入了组成消息传递系统的基本概念和组件。

表 3.1. 消息传递系统
图标名称使用案例

Message icon

图 5.1 “消息模式”

消息通道连接的两个应用程序如何交换部分信息?

Message channel icon

图 5.2 “消息频道模式”

一个应用程序如何使用消息传递与另一个应用程序通信?

Message endpoint icon

图 5.3 “消息端点模式”

应用程序如何连接到消息传递通道以发送和接收信息?

Pipes and filters icon

图 5.4 “管道和过滤器模式”

我们如何在消息上执行复杂的处理,同时仍然保持独立性和灵活性?

Message router icons

图 5.7 “消息路由器模式”

如何分离单独的处理步骤,以便消息可以根据一组定义的条件传递给不同的过滤器?

Message translator icon

图 5.8 “Message Translator Pattern”

使用不同数据格式的系统如何使用消息传递相互通信?

消息传递频道

消息传递通道是用于连接消息传递系统中参与者的基本组件。表 3.2 “消息传递频道” 中的模式描述了各种可用的消息传递频道。

表 3.2. 消息传递频道
图标名称使用案例

Point to point icon

图 6.1 “指向点频道模式”

如何确保一个接收方会接收文档或将执行调用?

Publish subscribe icon

图 6.2 “发布 Subscribe Channel Pattern”

如何将事件广播到所有感兴趣的接收器?

Dead letter icon

图 6.3 “死信频道模式”

消息传递系统与它无法发送的消息有什么作用?

Guaranteed delivery icon

图 6.4 “保证交付模式”

发件人如何确保传递消息,即使消息传递系统失败也是如此?

Message bus icon

图 6.5 “消息总线模式”

什么是架构,使独立的、分离的应用程序可以一起工作,以便添加或删除一个或多个应用程序,而不影响其他应用程序?

消息构建

表 3.3 “消息结构” 中显示的消息构造模式描述了通过系统传递的信息的各种形式和功能。

表 3.3. 消息结构
图标名称使用案例

Correlation identifier icon

“概述”一节

请求者如何识别生成收到回复的请求?

Return address icon

第 7.3 节 “返回地址”

销售代表如何知道在何处发送回复?

消息路由

消息路由模式(在 表 3.4 “消息路由” 中显示)描述了将消息频道链接到一起的各种方法,包括可应用到消息流的不同算法(无需修改消息正文)。

表 3.4. 消息路由
图标名称使用案例

Content based router icon

第 8.1 节 “基于内容的路由器”

当一个逻辑功能(例如,库存检查)分散到多个物理系统中时,我们如何处理一个情况?

Message filter icon

第 8.2 节 “消息过滤器”

组件如何避免收到未中断的信息?

Recipient List icon

第 8.3 节 “接收者列表”

如何将消息路由到动态指定收件人列表?

Splitter icon

第 8.4 节 “Splitter”

如果消息包含多个元素,我们如何处理消息,每个元素可能都必须以不同的方式处理?

Aggregator icon

第 8.5 节 “聚合器”

我们如何组合单个但相关消息的结果,以便可以作为一个整体进行处理?

Resequencer icon

第 8.6 节 “Resequencer”

我们可以如何获得相关流,但完全停止、信息回正确的顺序?

distribution aggregate icon

第 8.14 节 “由消息处理器组成”

在处理由多个元素组成的消息时,您如何维护整个消息流,每个元素可能需要不同的处理?

 

第 8.15 节 “scatter-Gather”

当您需要发送到多个接收者时,如何维护整个消息流,每个接收方可能发送回复?

Routing slip icon

第 8.7 节 “路由 Slip”

当设计时不知道步骤序列时,我们如何连续地通过一系列处理步骤来回路由消息,并可能因每个消息而异?

 

第 8.8 节 “Throttler”

如何对消息进行节流,以确保特定端点不会超载,或者我们不会超过具有某些外部服务的同意的 SLA?

 

第 8.9 节 “Delayer”

如何延迟发送邮件?

 

第 8.10 节 “Load Balancer”

如何在多个端点间平衡负载?

 

第 8.11 节 “Hystrix”

在调用外部服务时,我如何使用 Hystrix 断路器?Camel 2.18 中的新功能.

 

第 8.12 节 “服务调用”

如何在一个 registry 中查找该服务,在分布式系统中调用远程服务?Camel 2.18 中的新功能.

 

第 8.13 节 “多播”

如何同时将消息路由到多个端点?

 

第 8.16 节 “loop”

如何重复处理循环中的消息?

 

第 8.17 节 “sampling”

在给定期间,我如何对消息进行抽样,以避免过载下游路由?

消息转换

消息转换模式(如 表 3.5 “消息转换” 所示)描述了如何为各种目的修改信息内容。

表 3.5. 消息转换
图标名称使用案例

Content enricher icon

第 10.1 节 “内容增强”

如果消息源器没有所有所需的数据项目,我如何与另一个系统通信?

Content filter icon

第 10.2 节 “内容过滤器”

如何简化处理大型消息的处理方式,当您只对几个数据项感兴趣?

store in library icon

第 10.4 节 “声明检查 EIP”

我们如何减少系统中发送的消息的数据卷,而不牺牲信息内容?

Normalizer icon

第 10.3 节 “规范化程序”

您如何处理完全等效的消息,但采用不同的格式?

 

第 10.5 节 “排序”

如何对邮件的正文进行排序?

消息传递端点

消息传递端点表示消息传递频道和应用程序之间的联系点。消息传递端点模式(如 表 3.6 “消息传递端点” 所示)描述了可在端点上配置的各种功能和服务质量。

表 3.6. 消息传递端点
图标名称使用案例
 

第 11.1 节 “消息传递映射程序”

如何在域对象和消息传递基础架构之间移动数据,同时保持两个相互独立的?

Event driven icon

第 11.2 节 “event Driven Consumer”

应用程序如何在消息可用时自动使用消息?

Polling consumer icon

第 11.3 节 “polling Consumer”

应用程序在应用程序就绪时如何消耗消息?

Competing consumers icon

第 11.4 节 “竞争消费者”

消息传递客户端如何同时处理多个消息?

Message dispatcher icon

第 11.5 节 “Message Dispatcher”

单个频道中的多个消费者如何协调其消息处理?

Selective consumer icon

第 11.6 节 “selective Consumer”

消息消费者如何选择要接收的消息?

Durable subscriber icon

第 11.7 节 “durable Subscriber”

当订阅者没有侦听它们时,订阅者如何避免缺少消息?

 

第 11.8 节 “idempotent Consumer”

消息接收器如何处理重复信息?

Transactional client icon

第 11.9 节 “事务客户端”

客户端如何通过消息传递系统控制其事务?

Messaging gateway icon

第 11.10 节 “消息传递网关”

如何封装从应用的其余部分对消息传递系统的访问?

Service activator icon

第 11.11 节 “Service Activator”

应用程序如何设计由各种消息传递技术以及非消息传递技术调用的服务?

系统管理

表 3.7 “系统管理” 中显示的系统管理模式描述了如何监控、测试和管理消息传递系统。

表 3.7. 系统管理
图标名称使用案例

Wire tap icon

第 12 章 系统管理

如何检查点到点频道上传输的消息?

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.