This section explains, through an example scenario, how the Document Message EIP can be implemented using the ESB profile of WSO2 ESBEI. The following topics are covered:
Table of Contents |
---|
...
The Document Message EIP is used to reliably transfer a data structure between applications. The The Command Message EIP allows allows you to invoke only a specific client through the ESB, while the Document Message EIP sends the entire data unit to the receiver. For more information, refer to to http://www.eaipatterns.com/DocumentMessage.html.
...
Figure 1: Document Message EIP
...
Sample scenario
This example demonstrates WSO2 the ESB transmitting profile transmitting an entire message from a client to a sample Axis2 server as a document message, which the Axis2 server processes so it can identify which operation to invoke.
The diagram below depicts how to simulate the example scenario using the WSO2 ESB profile.
Figure 2: Example Scenario of the Document Message EIP
Before digging into implementation details, let's take a look at the relationship between the example scenario and the Document Message EIP by comparing their core components.
Document Message EIP (Figure 1) | Document Message Example Scenario (Figure 2) |
---|---|
Sender | Stock Quote Client |
Document Message | Proxy Service |
Receiver | Simple Stock Quote Service Instance |
Environment setup
- Download and install WSO2 ESB from http://wso2.com/products/enterprise-service-bus. For a list of prerequisites and step-by-step installation instructions, refer to Installation Guide in the WSO2 ESB documentation.
- Start the sample Axis2 server. For instructions, refer to the section Setting Up the ESB Samples - Starting the Axis2 server in the WSO2 ESB documentation.
ESB Configuration
...
The ESB Configuration
Given below is the ESB configuration of this sample. Log in to the Management Console of the ESB profile, click Main, and then click Source View in the Service Bus menu to view this.
Anchor | ||||
---|---|---|---|---|
|
Code Block | ||||
---|---|---|---|---|
| ||||
<?xml version="1.0" encoding="UTF-8"?> <definitions xmlns="http://ws.apache.org/ns/synapse"> <proxy name="DocumentMessageProxy" transports="https http" startOnLoad="true" trace="disable"> <target> <inSequence> <send> <endpoint> <address uri="http://localhost:9000/services/SimpleStockQuoteService" /> </endpoint> </send> </inSequence> <outSequence> <send /> </outSequence> </target> </proxy> <sequence name="fault"> <log level="full"> <property name="MESSAGE" value="Executing default "fault" sequence"/> <property name="ERROR_CODE" expression="get-property('ERROR_CODE')"/> <property name="ERROR_MESSAGE" expression="get-property('ERROR_MESSAGE')"/> </log> <drop/> </sequence> <sequence name="main"> <log/> <send/> </sequence> </definitions> |
Simulating the sample scenario
...
How the implementation works
Let's investigate the elements of the ESB configuration in detail. The line numbers below are mapped with the ESB configuration shown above .
- Proxy Service [line 3 of ESB config] - The proxy service takes requests and forwards them to the back-end service, abstracting the routing logic from the client. In this example scenario, the proxy service just forwards requests to the back-end service following the Document Message EIP style.
Simulating the sample scenario
Now, let's try out the sample scenario explained above.
Setting up the environment
Download the Document-Message_1.0.0.zip
, which includes the artifacts of this sample and follow the steps in Setting up the Environment.
Executing the sample
Using a SOAP client (such as SoapUI), send a request to the ESB server to invoke the DocumentMessageProxy
. Note that the entire request will be passed to the back-end Axis2 Server, and the client will receive the response in return.
Request command:
ant stockquote -Dtrpurl=http://localhost:8280/services/DocumentMessageProxy
Stock Quote Client output:
Standard :: Stock price = $72.78678053494932
Axis2 server console output:
samples.services.SimpleStockQuoteService :: Generating quote for : IBM