Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

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
linenumbers
languagehtml/xmltrue
<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
languagebash
./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
languagebash
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
hiddentrue

Message Enrichment sample for WSO2 ESB

 

 

...