企业集成模式(Enterprise Integration Patterns, EIP)根据其功能和应用场景,可分为多个核心类型。这些类型覆盖了消息传递、路由、转换、流程控制及系统连接等关键环节。以下是主要类型分类及典型模式示例:
一、消息传递基础(Messaging Fundamentals)
核心目标:定义消息传递的基本机制,解耦生产者与消费者。
1. 消息通道(Message Channel)
- 类型:
- 点对点通道(Point-to-Point Channel):消息仅由一个消费者处理(如队列模型)。
- 发布-订阅通道(Publish-Subscribe Channel):消息可被多个消费者监听(如主题模型)。
- 作用:实现异步通信,隔离消息发送者与接收者。
2. 消息端点(Message Endpoint)
- 模式:
- 消息生产者(Message Producer):发送消息到通道。
- 消息消费者(Message Consumer):从通道接收消息。
- 作用:封装应用与消息系统的连接细节(如协议适配、连接池管理)。
二、消息路由(Message Routing)
核心目标:定义消息的路由逻辑,根据内容、规则或条件将消息导向不同目的地。
1. 内容基于路由(Content-Based Router)
- 逻辑:根据消息内容(如字段值、头信息)选择路由路径。
- 示例:根据订单类型(“普通订单”“加急订单”)路由至不同处理服务。
2. 消息分发器(Splitter)
- 逻辑:将单个消息拆分为多个子消息(如数组拆分为元素),逐个路由。
- 示例:将批量订单拆分为单个订单消息处理。
3. 消息聚合器(Aggregator)
- 逻辑:收集多个相关子消息,合并为一个聚合消息。
- 示例:聚合用户多个操作日志为一条统计消息。
4. 服务激活器(Service Activator)
- 逻辑:将消息转发至外部服务(如 REST API、数据库)处理,并返回结果。
- 示例:调用库存服务查询商品余量。
三、消息转换(Message Transformation)
核心目标:解决系统间数据格式、协议或语义的差异。
1. 数据映射(Data Mapper)
- 逻辑:将消息从一种数据格式转换为另一种(如 XML 转 JSON、不同字段映射)。
- 示例:将客户信息从 ERP 系统的 XML 格式转换为 CRM 系统的 JSON 格式。
2. 内容增强器(Content Enricher)
- 逻辑:通过外部数据源补充消息内容(如查询字典表获取枚举值描述)。
- 示例:为订单消息补充商品名称(通过调用商品服务获取)。
3. 内容过滤(Content Filter)
- 逻辑:根据条件过滤消息,仅保留符合条件的内容。
- 示例:过滤掉金额小于 0 的异常交易消息。