Patterns Overview

Pattern Catalog

Next Next

Site Home • Patterns Home • Table of Contents

We started to collect integration patterns in th beginning of 2002. This page shows our continuing work in progress, which is now published in book form. We welcome your feedback at: info@enterpriseintegrationpatterns.com.

Stay informed! To receive notifications of updates to the site send an e-mail message to eaipatterns-announce-subscribe@yahoogroups.com. I send updates every once in a while to let you know what is new (very low traffic and no spam).

The Book!

Now you can get all Enterprise Integration Patterns in a single book. Read the patterns on an airplane or get a copy for your co-workers! The book contains all 65 patterns, lots of edits and cleaner pictures. [On Amazon]


Enterprise Integration Patterns, Gregor Hohpe and Bobby Woolf, ISBN 0321200683, 650 pages, Addison-Wesley

What are Enterprise Integration Patterns?

Enterprise integration is a complex field, and there is no simple 'cookbook' answer. That's why patterns are a useful way to convey experience that usually only lives in architects' heads. Patterns are accepted solutions to recurring problems within a given context. They are abstract enough to apply to most integration technologies, but specific enough to provide hands-on guidance to designers and architects. Patterns also provide a vocabulary for developers to efficiently describe their solution.

Patterns are not 'invented'; they are harvested from repeated use in practice. If you have built integration solutions, it is likely that you have used some of these patterns, maybe in a slight variation and maybe calling it by a different name. The purpose of this site is to present a coherent collection of relevant patterns that form an integration pattern language.

Who can use Enterprise Integration Patterns?

The patterns presented on this site help integration architects and developers design and implement integration solutions more rapidly and reliably. Most of the patterns assume a basic familiarity with messaging architectures. However, the patterns are not tied to a specific implementation. So if you use EAI suites such as IBM WebSphere MQ, TIBCO, Vitria, SeeBeyond, WebMethods etc., messaging specifications such as JMS, or Web service standards like SOAP, these patterns help you design better integration solutions. In some cases, a pattern may already be embedded in the middleware package. This is a sign that the vendor recognized the recurring problem and incorporated the solution into the package. We still present these patterns for two reasons. First, not all packages implement the same patterns, so a user working with another package will still find the pattern useful. Second, despite the default implementation of the pattern in the middleware package, a description of the forces and alternatives is insightful for any architect or developer who is interested in EAI concepts beyond the specific package implementation.

The Patterns

We have identified 65 patterns so far. The Table of Contents lists the problems addressed by each pattern. We organized the patterns into the following categories:

  • Integration Styles document different ways applications can be integrated. These patterns present somewhat of a historical account of integration technologies. All subsequent patterns follow the Messaging style.
  • Channel Patterns describe the fundamental attributes of a messaging system. These patterns are implemented by most commercial messaging systems. This section focuses on the interrelationships between different features and highlights implementation trade-off made by different vendors.
  • Message Construction Patterns describe the intent, form and content of the messages that travel across the messaging system. The base pattern for this section is the Message pattern.
  • Routing Patterns discuss mechanisms to direct messages from a sender to the correct receiver. Message routing patterns consume messages from one channel and republish the message to another channel that is determined by a varying set of conditions. The message content is not modified. The patterns presented in this section are special cases of the Message Router base pattern.
  • Transformation Patterns change the information content of a message. In many cases, a message format needs to be changed due to different data formats used by the sending and the receiving system. Data may have to be added, taken away or existing data may have to be rearranged. The base pattern for this section is the Message Translator.
  • Endpoint Patterns describe the behavior of messaging system clients. They illustrate different ways in which applications can produce or consume messages.
  • System Management Patterns provide the tools to keep a complex message-based system running. A message-based integration solution can process thousands or even millions of messages in a day. Messages are generated, routed, transformed and consumed. The solution has to deal with error conditions, performance bottlenecks and changes in the participating systems. Message management patterns address these requirements.

We expect to discover many more integration patterns or whole pattern categories as we progress.

Contributors

The patterns on this site are the result of discussions involving numerous individuals. Kyle Brown (co-author of "Enterprise Java Programming for IBM WebSphere" and "The Design Patterns Smalltalk Companion"), John Crupi (co-author of "Core J2EE Patterns"), Martin Fowler (author of too many books to mention here), Rachel Reinitz, Mark Weitzel were part of the original discussions. Conrad D'Cruz, Sean Neville, Mike Rettig, Jonathan Simon ended up authoring examples, case studies and a chapter on the future of integration.

Colophon

This web site is rendered entirely from XML source files using XSL stylesheets. This approach separates content from presentation and allows me to create the table of contents and 'previous' and 'next' links automatically. In addition, it will allow me to render a PDF document from the same XML source using FOP. I use Ant to validate and transform the XML files and deploy them to this site. [What is a colophon?]

Integration Patterns
Patterns Overview
Table of Contents
Revision History
Introduction
Preface
Introduction
Solving Integration Problems using Patterns
Integration Styles
Introduction
File Transfer
Shared Database
Remote Procedure Invocation
Messaging
Messaging Systems
Introduction
Message Channel
Message
Pipes and Filters
Message Router
Message Translator
Message Endpoint
Messaging Channels
Introduction
Point-to-Point Channel
Publish-Subscribe Channel
Datatype Channel
Invalid Message Channel
Dead Letter Channel
Guaranteed Delivery
Channel Adapter
Messaging Bridge
Message Bus
Message Construction
Introduction
Command Message
Document Message
Event Message
Request-Reply
Return Address
Correlation Identifier
Message Sequence
Message Expiration
Format Indicator
Interlude: Simple Messaging
Introduction
JMS Request/Reply Example
.NET Request/Reply Example
JMS Publish/Subscribe Example
Message Routing
Introduction
Content-Based Router
Message Filter
Dynamic Router
Recipient List
Splitter
Aggregator
Resequencer
Composed Msg. Processor
Scatter-Gather
Routing Slip
Process Manager
Message Broker
Message Transformation
Introduction
Envelope Wrapper
Content Enricher
Content Filter
Claim Check
Normalizer
Canonical Data Model
Interlude: Composed Messaging
Introduction
Synchronous (Web Services)
Asynchronous (MSMQ)
Asynchronous (TIBCO)
Messaging Endpoints
Introduction
Messaging Gateway
Messaging Mapper
Transactional Client
Polling Consumer
Event-Driven Consumer
Competing Consumers
Message Dispatcher
Selective Consumer
Durable Subscriber
Idempotent Receiver
Service Activator
System Management
Introduction
Control Bus
Detour
Wire Tap
Message History
Message Store
Smart Proxy
Test Message
Channel Purger
Interlude: Systems Management Example
Instrumenting Loan Broker
Integration Patterns in Practice
Case Study: Bond Trading System
Concluding Remarks
Emerging Standards
Appendices
Bibliography

Home • Patterns • Table of ContentsNext Next