Sample 15: Message Enrichment through Synapse
Objective: Introduction to Message Copying and Content Enriching with Enrich Mediator
<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
./axis2server.sh
This sample demonstrate the various capabilities of Enrich Mediator. Inside the in-sequence we store/copy different parts of the message to properties and just before sending the message to the StockQuoteService, we modify the request value 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.
ant stockquote -Dtrpurl=http://localhost:8280/
You can try with different local entries as the source with the correct target xpath values.
Â
Â
Â