Mahazen Logo
Commencer
blog.backToBlog
Enterprise Integration

Enterprise Integration Patterns: The Foundation of Modern System Design

1 mars 2026
Enterprise Integration Patterns: The Foundation of Modern System Design

A practical introduction to the 65 Enterprise Integration Patterns defined by Hohpe & Woolf — and why they remain the definitive vocabulary for anyone connecting systems at scale.

What Are Enterprise Integration Patterns?

In 2003, Gregor Hohpe and Bobby Woolf published Enterprise Integration Patterns — a catalogue of 65 patterns for connecting enterprise applications using asynchronous messaging. Two decades later, those patterns remain the definitive vocabulary for integration architects, regardless of whether the underlying technology is JMS, Kafka, RabbitMQ, Apache Camel, or a cloud-native event bus.

At their core, EIPs answer one question: how do you reliably move data between systems that were never designed to talk to each other?

The Four Pattern Categories

Hohpe and Woolf organised the 65 patterns into four groups:

  • Messaging Systems — the building blocks: Message Channel, Message, Pipe and Filter, Message Router, Message Translator, Message Endpoint.
  • Messaging Channels — how messages travel: Point-to-Point Channel, Publish-Subscribe Channel, Dead Letter Channel, Guaranteed Delivery.
  • Message Routing — directing messages to the right destination: Content-Based Router, Message Filter, Splitter, Aggregator, Resequencer, Scatter-Gather.
  • Message Transformation — reshaping messages between formats: Message Translator, Envelope Wrapper, Content Enricher, Content Filter, Normalizer.

Why These Patterns Still Matter

The tools change — CORBA gave way to ESBs, ESBs gave way to microservices, microservices gave way to event-driven architectures. But the problems do not change. You still need to:

  • Route a message to the right service based on its content
  • Aggregate responses from multiple services into a single reply
  • Handle transient failures without losing data
  • Translate between incompatible data formats

The patterns give you a precise name for each solution, which makes architectural discussions faster and design reviews more productive.

A Concrete Example: The Content-Based Router

Imagine an order management system that receives orders from three channels: web, mobile, and EDI. Each channel sends orders in a different format and each needs to be routed to a different fulfilment pipeline.

The Content-Based Router pattern solves this by inspecting message content and dispatching to the appropriate channel:

// Apache Camel DSL
from("activemq:orders.inbound")
  .choice()
    .when(xpath("/order/@source = 'web'")).to("direct:web-fulfilment")
    .when(xpath("/order/@source = 'mobile'")).to("direct:mobile-fulfilment")
    .when(xpath("/order/@source = 'edi'")).to("direct:edi-fulfilment")
  .otherwise()
    .to("activemq:orders.dead-letter");

This is deceptively simple, but the pattern name carries important design intent: the router has no business logic — it only inspects and routes. Business logic lives downstream. This separation is what makes the pattern composable.

Getting Started

The best way to learn EIPs is to pick an integration framework that implements them natively. Apache Camel maps almost every pattern directly to a DSL construct. Spring Integration does the same with an XML or Java annotation approach. Once you know the pattern names, reading Camel routes or Spring Integration graphs becomes straightforward.

In the next articles in this series, we will walk through the most commonly used patterns in practice — Message Channel types, the Splitter-Aggregator pair, the Saga pattern for distributed transactions, and how Apache Camel implements all of them in production SAP landscapes.

Enterprise Integration Architecture EIP