首页/开发/系统分析与架构设计速查/企业集成模式(EIP)

企业集成模式(EIP)

Gregor Hohpe 归纳的消息集成模式目录:路由、转换、端点与消息通道四大类;用成熟模式表达集成逻辑,比自创管道更易评审与复用。

什么是企业集成模式

企业集成模式(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 提供的是词汇表与骨架:具体落地仍要按业务定义死信通道、重投流程、消息顺序要求与幂等键。
缺少死信通道设计时,一条坏消息会阻塞整条队列:消费端反复重试同一条消息,后面的正常消息全部积压。

易错点

  • 没有死信通道,坏消息阻塞整条队列,正常业务全部积压
  • 集成逻辑散落在各应用代码里,缺少统一模式与治理,排查困难
  • 通道语义选错:需要点对点的场景用了广播通道,导致重复处理
  • 没有幂等设计,重投或重放时业务被重复执行

数据来源与参考

  • Gregor Hohpe & Bobby Woolf《Enterprise Integration Patterns》
  • Apache Camel 文档:EIP 目录
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌