Skip to main content

WSO2 ESB Enterprise Integration Patterns (EIP) Documentation

WSO2 has recently published a library of documentation on the list of enterprise integration patterns (EIP) with WSO2 ESB.

The documentation comprehensively covers the complete domain, and each pattern is detailed with how they can be implemented with WSO2 ESB mediators, along with samples and images.

For example, the following is an extract from the Message Store EIP page, showing an example scenario with WSO2 ESB.

Each page is packed with a sample scenario, along with a sample implementation each, and makes developers life easy, both to learn the concepts in general, as well as to use WSO2 ESB to implement those in practice.

Following is the complete list of EIP library entries on WSO2 ESB documentation page.

Messaging Systems


Message Channels

How one application communicates with another using messaging.



How two applications connected by a message channel exchange a piece of information.


Pipes and Filters

How to perform complex processing on a message while maintaining independence and flexibility.


Message Router

How to decouple individual processing steps so that messages can be passed to different filters depending on conditions.


Message Translator

How systems using different data formats communicate with each other using messaging.


Message Endpoint

How an application connects to a messaging channel to send and receive messages.

Messaging Channels


Point-to-Point Channel

How the caller can be sure that exactly one receiver will receive the document or perform the call.


Publish-Subscribe Channel

How the sender broadcasts an event to all interested receivers.


Datatype Channel

How the application sends a data item such that the receiver will know how to process it.


Invalid Message Channel

How a messaging receiver gracefully handles a message that makes no sense.


Dead Letter Channel

What the messaging system does with a message it cannot deliver.


Guaranteed Delivery

How the sender ensures delivery of a message, even if the messaging system fails.


Channel Adapter

How to connect an application to the messaging system to send/receive messages.


Messaging Bridge

How multiple messaging systems can be connected so that messages available on one are also available on the others.


Message Bus

An architecture enabling separate applications to work together in a decoupled fashion such that applications can be easily added or removed without affecting the others.

Message Construction


Command Message

How messaging can be used to invoke a procedure in another application.


Document Message

How messaging can be used to transfer data between applications.


Event Message

How messaging can be used to transmit events from one application to another.



How an application that sends a message gets a response from the receiver.


Return Address

How a replier knows where to send the reply.


Correlation Identifier

How a requester that has received a reply knows which request the reply is for.


Message Sequence

How messaging can transmit an arbitrarily large amount of data.


Message Expiration

How a sender indicates when a message should be considered stale and therefore should not be processed.


Format Indicator

How a message’s data format can be designed to allow for possible future changes.

Message Routing


Content-Based Router

How to handle a situation when the implementation of a single logical function (such as an inventory check) is spread across multiple physical systems.


Message Filter

How a component avoids receiving uninteresting messages.


Dynamic Router

How to avoid the dependency of a router in all possible destinations, while maintaining its efficiency.


Recipient List

How to route a message to a list of dynamically specified recipients.



How to process a message if it contains multiple elements, each of which may have to be processed in a different way.



How to combine the results of individual but related messages so that they can be processed as a whole.



How to get a stream of related but out-of-sequence messages back into the correct order.


Composed Msg. Processor

How to maintain the overall flow when processing a message consisting of multiple elements, each of which may require different processing.



How to maintain the overall flow when a message needs to be sent to multiple recipients, each of which may send a reply.


Routing Slip

How to route a message consecutively through a series of steps when the sequence of the steps is not known at design time and may vary for each message.


Process Manager

How to route a message through multiple processing steps, when the required steps may not be known at design time and may not be sequential.


Message Broker

How to decouple the destination of a message from the sender and maintain central control over the flow of messages.

Message Transformation


Envelope Wrapper

How existing systems participate in a messaging exchange, which places specific requirements in the message format, such as message header fields or encryption.


Content Enricher

How to communicate with another system if the message originator does not have all the required data items available.


Content Filter

How to simplify dealing with a large message when you are interested only in a few data items.


Claim Check

How to reduce the data volume of a message sent across the system without sacrificing information content.



How to process messages that are semantically equivalent but arrive in a different format.


Canonical Data Model

How to minimize dependencies when integrating applications that use different data formats.

Messaging Endpoints


Messaging Gateway

How to encapsulate access to the messaging system from the rest of the application.


Messaging Mapper

How to move data between domain objects and the messaging infrastructure, while keeping the two independent of each other.


Transactional Client

How a client controls its transactions with the messaging system.


Polling Consumer

How an application consumes a message when the application is ready.


Event-Driven Consumer

How an application automatically consumes messages as they become available.


Competing Consumers

How a messaging client processes multiple messages concurrently.


Message Dispatcher

How multiple consumers on a single channel coordinate their message processing.


Selective Consumer

How a message consumer selects which messages to receive.


Durable Subscriber

How a subscriber avoids missing messages while it is not listening for them.


Idempotent Receiver

How a message receiver deals with duplicate messages.


Service Activator

How an application designs a service to be invoked via both messaging and non-messaging techniques.

System Management


Channel Purger

Removes unwanted messages, which can disturb tests or running systems, from a channel.


Control Bus

Administers a messaging system that is distributed across multiple platforms and a wide geographic area.



Routes a message through intermediate steps to perform validation, testing or debugging functions.


Message History

Lists all applications that the message passed through since its origination.


Message Store

Reports against message information without disturbing the loosely coupled and transient nature of a messaging system.


Smart Proxy

Tracks messages on a service that publishes reply messages to the Return Address specified by the requester.


Test Message

Ensures the health of message processing components by preventing situations such as garbling outgoing messages due to an internal fault.


Wire Tap

Inspects messages that travel on a Point-to-Point Channel.


Technorati Tags: ,,,


Popular posts from this blog

24 Lessons Learnt in the 12 Years at WSO2

I joined WSO2 in the second week after its inception on September 1 st , 2005. Since then I have been playing various roles. It has been a long journey, with interesting experiences. It has never been a smooth ride, but a very vivid and enjoyable one.  There were good times, not so good times, tough times and exciting times. But I have enjoyed it all the way along, and the journey and the outcomes so far have been exciting. I have been privileged to be here for this long.  And I have learned so many lessons thought-out. Here are the highlights, the top 24 from those many lessons I learnt. 1. Delegation is the first lesson to learn towards great leadership I am a geeky technical person. I can do many things on my own. When I started with WSO2 I joined as a C/C++ person in an architect role. I worked with the C team and created the Apache Axis2 C project. I would work hours, considered any issue that the code base ran into and worked on everything and anything that I

Life lessons are lifelong: Moving along with new generation

This post on  lessons learnt  was written by me about four years ago. I read this again in full yesterday after few years, and I got inspired myself from my own lessons.  Life sure moved on since then, but most of the lessons mentioned in the post are timeless.  We live in the age of social media where fake advice is all over the place. We are filled with baseless, useless, meatless, boneless arguments and advice each day over social media. The reality is, however, great insight takes time and take shape though painful gain.  In the quest to attract skills, talent, people and eventually profits, the human resource functions in organisations has turned into fake rewards, fake appreciations and fake entertainment. Yet, the productivity, efficiency, accountability remains a key challenge for most organisations. The reality is the shallow techniques are not working any more.  The young generation today are bombarded with information bites. I call them information bites, because, everything