什么是企业集成模式
企业集成模式(Enterprise Integration Patterns,EIP)由 Gregor Hohpe 与 Bobby Woolf 归纳,把消息中间件集成中的常见问题整理成模式目录,分为消息通道、路由、转换与端点四大类。它的价值在于提供一套共同词汇与骨架:用成熟模式表达集成逻辑,比各写一套自创管道更容易评审、复用与排障。
基本信息
| 出处 | 《Enterprise Integration Patterns》(Hohpe & Woolf,2003) |
|---|---|
| 四大类 | 消息通道、消息路由、消息转换、消息端点 |
| 典型实现 | 各类消息中间件与集成框架均实现其中大部分模式 |
| 配套设计 | 死信通道、重投流程、消息幂等与顺序保证 |
类别与代表模式
| 类别 | 代表模式 | 解决的问题 |
|---|---|---|
| 消息通道 | 点对点、发布订阅、死信通道 | 消息如何流动与隔离失败 |
| 消息路由 | 内容路由、消息过滤器、分流器 | 按内容分发到不同目标 |
| 消息转换 | 消息翻译、内容富化、规范化 | 不同数据格式之间互转 |
| 消息端点 | 竞争消费者、幂等接收者、事务性端点 | 应用如何安全接入消息系统 |
典型使用场景
- 异构系统集成:用消息翻译把各系统的数据格式统一到内部模型
- 按内容分发:用内容路由把不同类型的消息送到各自处理链路
- 削峰与解耦:发布订阅把生产方与多个消费方解耦,各自按能力消费
- 失败隔离:为坏消息设置死信通道,避免阻塞主队列
- 竞争消费扩容:多个实例竞争消费同一队列,按处理能力横向扩展
- 幂等接入:端点按消息标识去重,重复投递不影响业务结果
典型链路设计示意
典型链路设计示意
# 订单事件链路(示意)
[订单服务] --发布--> 订单事件通道(Topic)
|
+--> 内容路由:按 event_type 分流
|- order.created --> 库存预占队列 --> 竞争消费者
|- order.paid --> 结算队列 --> 幂等接收者
`- 其它类型 --> 审计归档通道
# 失败处理
处理失败 N 次 --> 死信通道 --> 告警 + 人工重投工具
# 关键约定
消息带唯一 ID 与追踪标识;所有消费者按 ID 去重EIP 提供的是词汇表与骨架:具体落地仍要按业务定义死信通道、重投流程、消息顺序要求与幂等键。
缺少死信通道设计时,一条坏消息会阻塞整条队列:消费端反复重试同一条消息,后面的正常消息全部积压。