This site contains the documentation that is relevant to older WSO2 product versions and offerings.
For the latest WSO2 documentation, visit https://wso2.com/documentation/.
Sample 15: Message Enrichment through Synapse
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:
<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>
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. Just before sending the message to the 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.
ant stockquote -Dtrpurl=http://localhost:8280/services/StockQuote
2. You can try this sample with different local entries as the source with the correct target xpath values.