Enterprise Integration PatternsMessaging Patterns
HOME    PATTERNS    RAMBLINGS    ARTICLES    TALKS    DOWNLOAD    BOOKS    CONTACT

Messaging Patterns Overview

Messaging Patterns

Previous Previous   Next Next

This pattern catalog describes 65 integration patterns, collected from many integration projects since 2002. The patterns provide technology-independent design guidance for developers and architects to describe and develop robust integration solutions. The inspiration to document these patterns came when we struggled through multiple integration vendors' product documentation just to realize later that many of the underlying concepts were quite similar.

Why Enterprise Integration Patterns?

Enterprise integration is too complex to be solved with a simple 'cookbook' approach. Instead, patterns can provide guidance by documenting the kind of experience that usually lives only in architects' heads: they are accepted solutions to recurring problems within a given context. Patterns 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 slight variations and maybe calling them by a different name. The purpose of this site is not to "invent" new approaches, but to present a coherent collection of relevant and proven patterns, which in total form an integration pattern language.

Despite the 700+ pages, our book covers only a fraction of patterns (and the problems to be solved) in the integration space. The current patterns focus on Messaging, which forms the basis of most other integration patterns. We have started to harvest more patterns but are realizing (once again) how much work documenting these patterns really is. So please stay tuned.

Messaging Patterns

We have documented 65 messaging patterns, organized as follows:

  • Integration Styles document different ways applications can be integrated, providing a historical account of integration technologies. All subsequent patterns follow the Messaging style.
  • Channel Patterns describe how messages are transported across a Message Channel. These patterns are implemented by most commercial and open source messaging systems.
  • 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 how messages are routed from a sender to the correct receiver. Message routing patterns consume a message from one channel and republish it message, usually without modification, to another channel based on a set of conditions. The patterns presented in this section are specializations of the Message Router pattern.
  • Transformation Patterns change the content of a message, for example to accommodate 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 how messaging system clients produce or consume messages.
  • System Management Patterns describe the tools to keep a complex message-based system running, including dealing with error conditions, performance bottlenecks and changes in the participating systems.

What Products Implement or Use Enterprise Integration Patterns?

The patterns are not tied to a specific implementation. They help you design better solutions, whether you use any of the following platforms:

How Can You Use the Patterns?

We want to encourage widespread use of the integration pattern language. We have therefore provided a variety of ways to access them:

  • Reference. A summary of each pattern from the book is available on this site.
  • Read. Of course, the book Enterprise Integration Patterns (Addison-Wesley, ISBN 0321200683) contains the full catalog of patterns with a much more detailed discussion and examples -- over 700 pages worth of material. You can also read the full text on-line on Safari (with membership).
  • Document. You can create design documents using our icon language by downloading the Visio stencil or using the OmniGraffle stencil created by one of our readers.
  • Reuse. You are also welcome to build on top of what we have done. We made the pattern name, icon, problem and solution statements, as well as the sketches (the diagram below the solution statement) available under the Creative Commons Attribution license. In brief, this license allows you share, use and modify these passages as long as you give proper attribution. In our case, this would mean a link to the site and a reference to the book title and authors. If you have questions regarding this requirement, please contact us.
  • Build. A number of open-source frameworks, such as Mule, Apache Camel, or Spring Integration incorporate our patterns. Now you can not only think in integration patterns, but also to code in them!
  • Teach. A number of professors use our material in lectures. If you are interested in getting access to material for academic purposes, please contact us.

What about REST / SOA / Web Service Patterns?

The book is now over 10 years old. Yet, the integration problems we have to solve every day remain frustratingly similar. Because the patterns encapsulate design knowledge, this knowledge does not age nearly as quickly as a specific technology. For more on applying the patterns to recent integration technologies like REST or Google Cloud Pub/Sub, follow our Ramblings.

Be Part of the Community

We welcome your feedback at: [email protected].

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.


Want to keep up-to-date? Follow My Blog.
Want to read more in depth? Check out My Articles.
Want to see me live? See where I am speaking next.

Enterprise Integration Patterns Find the full description of this pattern in:
Enterprise Integration Patterns
Gregor Hohpe and Bobby Woolf
ISBN 0321200683
650 pages
Addison-Wesley

From Enterprise Integration to Enterprise Transformation:

My new book describes how architects can play a critical role in IT transformation by applying their technical, communication, and organizational skills with 37 episodes from large-scale enterprise IT.

DRM-free eBook on Leanpub.com

Print book on Amazon.com

Creative Commons Attribution License Parts of this page are made available under the Creative Commons Attribution license. You can reuse the pattern icon, the pattern name, the problem and solution statements (in bold), and the sketch under this license. Other portions of the text, such as text chapters or the full pattern text, are protected by copyright.


Table of Contents
Preface
Introduction
Solving Integration Problems using Patterns
Integration Styles
File Transfer
Shared Database
Remote Procedure Invocation
Messaging
Messaging Systems
Message Channel
Message
Pipes and Filters
Message Router
Message Translator
Message Endpoint
Messaging Channels
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
Command Message
Document Message
Event Message
Request-Reply
Return Address
Correlation Identifier
Message Sequence
Message Expiration
Format Indicator
Interlude: Simple Messaging
JMS Request/Reply Example
.NET Request/Reply Example
JMS Publish/Subscribe Example
Message Routing
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
Envelope Wrapper
Content Enricher
Content Filter
Claim Check
Normalizer
Canonical Data Model
Interlude: Composed Messaging
Synchronous (Web Services)
Asynchronous (MSMQ)
Asynchronous (TIBCO)
Messaging Endpoints
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
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
Revision History