Skip to content

Enterprise Integrations Patterns

The WSO2 Integrator: BI supports the implementation of key Enterprise Integration Patterns (EIPs), enabling you to build robust and scalable integrations based on proven architectural best practices. These patterns—originally defined in Enterprise Integration Patterns by Gregor Hohpe and Bobby Woolf—provide reusable solutions for common messaging and system integration challenges. This guide demonstrates how to implement each core pattern using the low-code capabilities and visual tools of the WSO2 Integrator: BI, helping you design clear, maintainable, and standards-based integration flows.

Enterprise Integration Patterns with Ballerina

For a code-centric implementation of Enterprise Integration Patterns using the Ballerina language, refer to the Ballerina EIP guide.

Messaging systems

Message message How can two applications connected by a message channel exchange a piece of information
Message Endpoint message-endpoint How an application connects to a messaging channel to send and receive messages
Message Translator message-translator How systems using different data formats communicate with each other using messaging
Message Router message-router How to decouple individual processing steps so that messages can be passed to different filters depending on a set of conditions
Pipes and Filters pipes-and-filters How to perform complex processing on a message while maintaining independence and flexibility

Messaging channels

Channel Adapter channel-adapter How can two applications connected by a message channel exchange a piece of information
Messaging Bridge messaging-bridge How an application connects to a messaging channel to send and receive messages
Point to Point Channel point-to-point-channel How systems using different data formats communicate with each other using messaging

Message construction

Command Message command-message How messaging can be used to invoke a procedure in another application
Document Message document-message How messaging can be used to transfer data between applications.
Event Message event-message How messaging can be used to transmit events from one application to another
Format Indicator format-indicator How a message’s data format can be designed to allow for possible future changes
Message Sequence message-sequence How messaging can transmit an arbitrarily large amount of data

Message routing

Content-Based Router content-based-router How to handle a situation where the implementation of a single logical function is spread across multiple physical systems
Aggregator aggregator How to combine the results of individual, but related messages so that they can be processed as a whole
Message Filter message-filter How a component avoids receiving uninteresting messages
Process Manager 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
Routing Slip 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
Splitter splitter How to process a message if it contains multiple elements, each of which may have to be processed in a different way

Message transformation

Content Enricher content-enricher How to communicate with another system if the message originator does not have all the required data items available
Content Filter content-filter How to simplify dealing with a large message when you are interested only in a few data items
Normalizer normalizer How to process messages that are semantically equivalent but arrive in a different format

Messaging Endpoints

Idempotent Receiver idempotent-receiver How can a message receiver deal with duplicate messages

System Management

Message Store message-store How to report against message information without disturbing the loosely coupled and transient nature of a messaging system