Objective: Introduction to Message Copying and Content Enriching with Enrich Mediator
Table of Contents |
---|
Introduction
This sample demonstrates various capabilities of the Enrich Mediator.
Prerequisites
Refer to Prerequisites section in ESB Samples Setup page.
Building the Sample
1. Start the ESB with sample 15 configuration using the instructions given in Starting Sample ESB Configurations.
2. A message should appear in the command or text Linux console stating the server started successfully.
3. The synapse configuration in the ESB used for message mediation in this sample is provided in <ESB_HOME>/repository/samples
/synapse_sample_15.xml
as shown below:
Code Block | ||||
---|---|---|---|---|
| ||||
<definitions xmlns="http://synapse.apache.org/ns/2010/04/configuration"> <sequence name="main"> <in> <enrich> <source type="custom" xpath="//m0:getQuote/m0:request/m0:symbol/text()" xmlns:m0="http://services.samples"/> <target type="property" property="ORIGINAL_REQ"/> </enrich> <enrich> <source type="body"/> <target type="property" property="REQUEST_PAYLOAD"/> </enrich> <enrich> <source type="inline" key="init_req"/> <target xmlns:m0="http://services.samples" xpath="//m0:getQuote/m0:request/m0:symbol/text()"/> </enrich> <send> <endpoint> <address uri="http://localhost:9000/services/SimpleStockQuoteService"/> </endpoint> </send> <drop/> </in> <out> <header xmlns:urn="http://synapse.apache.org" name="urn:lastTradeTimestamp" value="foo"/> <enrich> <source type="custom" xpath="//ns:getQuoteResponse/ns:return/ax21:lastTradeTimestamp" xmlns:ns="http://services.samples" xmlns:ax21="http://services.samples/xsd"/> <target xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="http://synapse.apache.org" xpath="/soapenv:Envelope/soapenv:Header/urn:lastTradeTimestamp"/> </enrich> <log level="full"/> <log> <property name="Original Request Symbol" expression="get-property('ORIGINAL_REQ')"/> <property name="Request Payload" expression="get-property('REQUEST_PAYLOAD')"/> </log> <send/> </out> </sequence> <localEntry key="init_req">MSFT</localEntry> <localEntry key="price_req"> <m0:symbol xmlns:m0="http://services.samples">MSFT</m0:symbol> </localEntry> </definitions> |
Prerequisites:
- Start the Synapse configuration numbered 15:
wso2esb-samples.sh -sn 15
- Start the Axis2 server and deploy the SimpleStockQuoteService if not already done
Code Block | ||
---|---|---|
| ||
./axis2server.sh |
This sample demonstrate the various capabilities of Enrich Mediator. 4. Deploy the back-end service 'SimpleStockQuoteService' and start the Axis2 server using the instructions given in section Starting Sample Back-End Services.
5. Now you have a running ESB instance and a back-end service deployed. In the next section, we will send a message to the back-end service through the ESB using a sample client.
Executing the Sample
The sample client used here is 'Stock Quote Client' which can operate in multiple modes. For instructions on this sample client and its operation modes, refer to Stock Quote Client.
Inside the in-sequence we store/copy different parts of the message to properties and just . Just before sending the message to the StockQuoteService, we modify a back-end service the request value is modified based on the local entry 'value-init_req'. Then in the out-sequence, the enrich mediator is used to enrich a soap header based on the 'lastTradeTimestamp' value of the response.
1. Run the following ant command from <ESB_HOME>/samples/axis2Client
directory.
Code Block | ||
---|---|---|
| ||
ant stockquote -Dtrpurl=http://localhost:8280/services/StockQuote | ||
Info |
2. You can try this sample with different local entries as the source with the correct target xpath values.
Excerpt | ||
---|---|---|
| ||
Message Enrichment sample for WSO2 ESB |
...