This section explains, through an example scenario, how the Document Message EIP can be implemented using the WSO2 ESB. 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 see http://www.eaipatterns.com/DocumentMessage.html.
Figure 1: Document Message EIP
Example scenario
This example demonstrates WSO2 how the ESB transmitting transmits an entire message from a client to a sample Axis2 server as a document message, which . Then the Axis2 server processes so it can identify the message and identifies which operation to invoke.
The following diagram
...
depicts this process.
Figure 2: Example Scenario 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 |
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 Getting Started in the WSO2 ESB documentation.
- Start the sample Axis2 server. For instructions, refer to the section ESB Samples Setup - Starting Sample Back-End Services in the WSO2 ESB documentation.
ESB Configuration
...
The ESB configuration
Given below is the ESB configuration for simulating the example scenario explained above.
Anchor | ||||
---|---|---|---|---|
|
Code Block | |
---|---|
language | html/xml | linenumbers | true
<?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
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.
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 .
...
definitions> |
The configuration elements
The elements used in the above ESB configuration are explained below.
- Proxy Service - The proxy service takes a request and forwards it to the back-end service, abstracting the routing logic from the client. In this example scenario, the proxy service just forwards the request to the back-end service, following the Document Message EIP.
Simulating the example scenario
Now, let's try out the example scenario explained above.
Setting up the environment
You need to set up the ESB, and the back-end service:
- Download the
Document-Message_1.0.0.zip
file, which includes the ESB configuration described above. See Setting up the Environment for instructions on setting up the ESB and the back-end service.
Info When you set up the environment, note that you only need to start one instance of the back-end service (Stock Quote Service) to simulate this example.
Executing the sample
Let's send a request to the ESB using the Stock Quote Client application. Find out more about the Stock Quote Client from the ESB documentation.
- Open a new terminal, and navigate to the
<ESB_HOME>/samples/axis2Client/
directory. The Stock Quote client application is stored in this directory. Execute the following command to send the request to the ESB.
Code Block ant stockquote -Dtrpurl=http://localhost:8280/services/DocumentMessageProxy
Analyzing the output
When you execute the command above, the ESB first receives the message and then routes it to the back-end service (StockQuoteService). The following output will be printed on the Axis2 server's console:
Code Block |
---|
samples.services.SimpleStockQuoteService :: Generating quote for : IBM |
The generated stock quote will then be sent to the client application (Stock Quote Client). The following output will be printed on the client application's console:
Code Block |
---|
Standard :: Stock price = $72.42070059233666 |