This page describes the WSO2 ESB architecture in the following sections:
Application infrastructure on the enterprises may be inherently complex, comprising hundreds of applications with completely different semantics. Some of these applications are custom built, some are acquired from third parties, and some can be a combination of both and can be operating in different system environments.
Integration among these heterogeneous applications is vital to the enterprise. Different services may be using different data formats and communication protocols. Physical locations of services can change arbitrarily. All these constraints mean your applications are still tightly coupled together. An ESB can be used to loosen these couplings between different services and service consumers.
The following diagram illustrates the ESB architecture from a messaging perspective (the components of the pipes are not in a specific order):
- An application sends a message to the ESB.
- The message is picked up by a transport.
- The transport sends the message through a message pipe, which handles quality of service aspects like Security and Reliable Messaging. Internally, this pipe is the in-flow and out-flow of Axis2. The ESB can operate in two modes:
- Both message transformation and routing can be considered as a single unit. As the diagram specifies, there is no clear separation between message transformation components and routing components. In WSO2 ESB, this is known as the mediation framework. Some transformations take place before the routing decision has been taken while others take place after the decision is taken. This is part of the Synapse implementation.
- After this message is injected to the separate pipes depending on the destinations. Here again quality of service aspects of the messages is determined.
- The transport layer takes care of the transport protocol transformations required by the ESB.
The diagram shows how a request propagates to its actual endpoint through the ESB using its architecture. Response handling is the reverse of this operation. There are other areas like Working with Tasks and Events that are not shown in the diagram. All these components can be managed and monitored through WSO2 ESB management console.
This section describes the component-based architecture of WSO2 ESB.
A transport is responsible for carrying messages that are in a specific format. WSO2 ESB supports all the widely used transports including HTTP/s, JMS, and VFS, and domain-specific transports like FIX. You can easily add a new transport using the Axis2 transport framework and plug it into the ESB.
Transports include the following components:
- Message builders - Identify the message using the content type and convert it to common XML. There is a message builder associated with each content type. WSO2 ESB includes message builders for text-based and binary content.
- Message formatters - The opposite partners of the message builders. The formatter converts the message back to its original format by referencing the content type just before the message handover to the transports.
You can implement new message builders and formatters using the Axis2 framework.
An endpoint defines an external destination (such as a service) for a message. An endpoint can be specified as an address endpoint, WSDL endpoint, a , and more. An endpoint is defined independently of transports, allowing you to use the same endpoint with multiple transports. When you configure a message mediation sequence or a proxy service to handle the incoming message, you specify the transport to use and the endpoint where the message will be sent.
Proxy services are virtual services that receive messages and optionally process them before forwarding them to a service at a given endpoint. This approach allows you to perform necessary transformations and introduce additional functionality without changing your existing service. Any available transport can be used to receive and send messages from the proxy services.
A topic allows services to receive messages when a specific type of event occurs by subscribing to messages that have been published to a specific topic.
Mediators are individual processing units that perform a specific function, such as sending or filtering messages. WSO2 ESB includes a comprehensive mediator library that provides functionality for implementing widely used enterprise integration patterns (EIPs). You can also easily write a custom mediator to provide additional functionality using various technologies such as Java, scripting, and Spring.
Sequences are the configuration component for mediators. Sequences allow you to organize mediators to implement pipes and filter patterns.
See Mediation Sequences.
Tasks and Commands
Tasks allow you to configure scheduled jobs in the ESB and execute internal and external commands for mediation.
See Working with Tasks.
WSO2 ESB provides a registry with a built-in repository that stores the configuration and configuration metadata that define your messaging architecture. You can also use a remote repository.
Management and Configuration GUI
The Management Console provides a graphical user interface (GUI) that allows you to easily configure the components mentioned above as well as manage and the ESB.
You can deploy WSO2 ESB in a clustered environment with a load balancer to achieve failover and high availability.