企业集成模式 (EIP) 教程

Enterprise Integration Patterns  (EIP)是 Gregor Hohpe 和 Bobby Woolf 的一本书,以模式语言的形式描述了 65 种用于使用 企业应用程序集成 和面向消息的中间件的模式。它们帮助我们使用标准化的方式来集成应用程序,而无需在每次遇到问题时都重新发明轮子。

企业集成模式的目标是创建一种通用语言和一组工作流操作,以便将它们组合在一起以创建成熟、实用的业务流程。它提供了一个包含 65 种模式的目录,可帮助您为您的企业设计有效的消息传递解决方案。

本书区分了四种顶级集成替代方案:

  1. 文件传输
  2. 共享数据库
  3. 远程过程调用
  4. 消息传递

引入了以下集成类型:

  • 信息门户
  • 数据复制
  • 共享业务功能
  • 面向服务的架构
  • 分布式业务流程
  • 企业对企业整合
  • 紧耦合交互与松耦合交互

使用免费在线工具绘制企业集成模式图

Visual Paradigm 的免费 企业集成模式工具 (EIP 图表工具)具有一组编辑功能,使绘图更简单、更快捷,例如拖放和对齐指南,使编辑变得流畅和直观。EIP 图表工具还附带一组 EIP 符号和形状,可让您创建不同类型的 EIP 图表。

您可以轻松地开发您的模式,然后通过 PNG、JPG、GIF、SVG 和 PDF 等格式输出和共享它们。

通过示例和模板学习 EIP

您可以从空白图表或 EIP 模板开始。以下是一些模板。单击“编辑”按钮立即开始编辑。它是免费的,无需注册。

企业集成模式示例:智能代理

即时在线编辑

企业集成模式示例:组合消息传递 MSMQ

在线编辑上述示例

想采用其他一些企业集成模式吗?

 来自 Visual Paradigm的EIP 在线编辑存储库

生态工业园区实施框架

Apache Camel 支持 Gregor Hohpe 和 Bobby Woolf 的优秀著作中的大多数 企业集成模式 。基于企业集成模式 (EIP) 通过应用开箱即用的最佳实践来帮助您解决集成问题。Camel 支持 Gregor Hohpe 和 Bobby Woolf 的优秀著作中的大多数企业集成模式,以及来自 微服务架构的更新集成模式。

如果您是 Camel 的新手,您可能想在尝试实现这些模式之前尝试用户指南中的 入门 。

消息系统

留言频道

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

信息

通过消息通道连接的两个应用程序如何交换一条信息?

管道和过滤器

我们如何在保持独立性和灵活性的同时对消息进行复杂的处理?

消息路由器

如何解耦各个处理步骤,以便根据一组条件将消息传递给不同的过滤器?

消息翻译器

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

消息端点

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

消息渠道

点对点通道

呼叫者如何确定只有一位接收者会收到文件或执行呼叫?

发布订阅频道

发送者如何向所有感兴趣的接收者广播事件?

死信频道

消息传递系统将如何处理它无法传递的消息?

保证交货

即使消息系统发生故障,发件人如何确保消息将被传递?

通道适配器

如何将应用程序连接到消息传递系统以便它可以发送和接收消息?

消息桥

如何连接多个消息传递系统,以便在一个消息系统上可用的消息也可以在其他消息系统上可用?

消息总线

什么样的架构能够使不同的应用程序一起工作,但以一种解耦的方式,以便可以轻松地添加或删除应用程序而不影响其他应用程序?

变更数据捕获

通过捕获对数据库所做的更改来同步数据,并将这些更改应用到另一个系统。

消息构造

活动讯息

如何使用消息传递将事件从一个应用程序传输到另一个应用程序?

请求回复

当应用程序发送消息时,它如何获得接收者的响应?

退货地址

回复者如何知道将回复发送到哪里?

相关标识符

收到回复的请求者如何知道这是针对哪个请求的回复?

消息过期

发件人如何指示何时应将消息视为陈旧并因此不应处理?

消息路由

基于内容的路由器

我们如何处理单个逻辑功能(例如,库存检查)的实现分布在多个物理系统中的情况?

消息过滤器

组件如何避免接收到无趣的消息?

动态路由器

如何在保持效率的同时避免路由器对所有可能的目的地的依赖?

收件人名单

我们如何将消息路由到(静态或动态)指定收件人列表?

分路器

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

聚合器

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

重测序仪

我们如何才能将相关但无序的消息流恢复到正确的顺序?

组合消息处理器

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

分散-聚集

当一条消息需要发送给多个收件人时,您如何维护整个消息流,每个收件人都可能会发送回复?

路由单

当步骤顺序在设计时未知并且可能因每条消息而异时,我们如何通过一系列处理步骤连续路由消息?

流程管理器

当所需的步骤在设计时可能不知道并且可能不是连续的时,我们如何通过多个处理步骤路由消息?

消息代理

如何将消息的目的地与发送者分离并保持对消息流的集中控制?

节流器

如何限制消息以确保特定端点不会超载,或者我们不会超过某些外部服务商定的 SLA?

采样

如何在给定时间内从多条消息中抽取一条消息以避免下游路由不过载?

延迟器

如何延迟发送消息?

负载均衡器

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

断路器

如果服务中断,我如何停止调用外部服务?

服务电话

如何在从某种服务注册表中查找服务的分布式系统中调用远程服务?

佐贺

如何在 Camel 路线中定义一系列相关操作,这些操作应该成功完成(全部)或不执行/补偿?

组播

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

环形

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

消息转换

内容丰富器

如果消息发起者没有可用的所有必需数据项,我们如何与另一个系统通信?

内容过滤器

当您只对少数数据项感兴趣时,如何简化对大消息的处理?

索赔检查

我们如何在不牺牲信息内容的情况下减少跨系统发送的消息的数据量?

归一化器

您如何处理语义上等效但以不同格式到达的消息?

种类

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

脚本

如何执行可能不会更改消息的脚本?

证实

如何验证消息?

消息传递端点

消息映射器

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

事件驱动消费者

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

轮询消费者

当应用程序准备就绪时,应用程序如何使用消息?

竞争消费者

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

消息调度程序

单个通道上的多个消费者如何协调他们的消息处理?

选择性消费者

消息消费者如何选择它希望接收的消息?

持久订户

订阅者如何在不收听消息时避免丢失消息?

幂等消费者

消息接收者如何处理重复消息?

交易客户端

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

消息网关

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

服务激活器

应用程序如何设计一项服务,以便通过各种消息传递技术和非消息传递技术调用?

系统管理

控制总线

我们如何有效地管理分布在多个平台和广泛地理区域的消息传递系统?

车辆改道

如何通过中间步骤路由消息以执行验证、测试或调试功能?

丝锥

您如何检查在点对点通道上传输的消息?

消息历史

我们如何有效地分析和调试松耦合系统中的消息流?

日志

如何记录处理消息?

Steps 将一组 EIP 组合成一个组合逻辑单元,用于度量和监控。

Leave a Reply

您的电子邮箱地址不会被公开。