Enterprise Integration Patterns (EIP), catalogued by Hohpe and Woolf in 2003, provide a vocabulary of 65 reusable patterns for building message-based integration systems. The core patterns include Message Router (directs messages to different channels based on content), Message Translator/Transformer (converts between data formats), Aggregator (collects related messages into a single composed message), and Splitter (decomposes a message into individual parts). Frameworks like Apache Camel, Spring Integration, and AWS Step Functions implement these patterns as composable building blocks.

Key Points

  • Content-Based Router: examines message content and routes to the appropriate downstream channel; example — route payment events by currency (USD → US processor, EUR → EU processor).
  • Message Filter: passes only messages satisfying a predicate; example — forward only ORDER_PLACED events from a raw events topic, discarding ORDER_VIEWED and ORDER_SEARCHED events.
  • Splitter: splits a bulk message (BatchOrder with 50 line items) into individual messages (50 OrderLineItem messages), each routed and processed independently.
  • Aggregator: the complementary pattern to Splitter; collects messages sharing a correlation ID (batchId) and emits a single composed result when all expected messages arrive or a timeout triggers.
  • Message Transformer (Canonical Data Model): translates proprietary formats to a common internal format — avoids N² point-to-point format converters by introducing one canonical message schema.
  • Correlation ID: a unique identifier attached to a message and propagated through all derived messages; enables an Aggregator to match responses to requests; critical for distributed tracing.
  • Dead Letter Channel: a special channel for messages that cannot be processed; includes the original message, error details, and retry count — enables operator inspection and reprocessing.
  • Apache Camel DSL example: from("kafka:orders").filter(header("eventType").isEqualTo("ORDER_PLACED")).split(body().tokenize(",")).to("kafka:line-items") — composable, readable EIP chains in Java or YAML.

Real-World Example

Mule ESB (MuleSoft) and IBM App Connect are enterprise integration platforms that implement all 65 EIP patterns as drag-and-drop components; they are widely used in Fortune 500 companies for ERP-to-CRM and bank-to-bank integration. Apache Camel powers integrations at companies like Red Hat, Deutsche Telekom, and FedEx — its 350+ component library covers everything from JMS to REST to cloud storage connectors.