Sample 302: Message Injector Task to invoke a Proxy service

<definitions xmlns="http://ws.apache.org/ns/synapse"> <task class="org.apache.synapse.startup.tasks.MessageInjector" name="InjectToProxyTask"> <property name="soapAction" value="urn:getQuote"/> <property name="format" value="soap11"/> <property name="injectTo" value="proxy"/> <property name="proxyName" value="SampleProxy"/> <property name="message"> <m0:getQuote xmlns:m0="http://services.samples"> <m0:request> <m0:symbol>IBM</m0:symbol> </m0:request> </m0:getQuote> </property> <trigger interval="5"/> </task> <proxy name="SampleProxy" transports="http"> <target> <inSequence> <log level="custom"> <property name="MSG" value="SampleProxy invoked"/> </log> <send> <endpoint> <address uri="http://localhost:9000/services/SimpleStockQuoteService"/> </endpoint> </send> </inSequence> <outSequence> <log level="custom"> <property xmlns:ns="http://services.samples" name="Stock_Quote_on" expression="//ns:return/ns:lastTradeTimestamp/child::text()"/> <property xmlns:ns="http://services.samples" name="For_the_organization" expression="//ns:return/ns:name/child::text()"/> <property xmlns:ns="http://services.samples" name="Last_Value" expression="//ns:return/ns:last/child::text()"/> </log> <drop/> </outSequence> </target> </proxy> </definitions>

Objective

Demonstrate how to schedule tasks to invoke a Proxy service periodically using the MessageInjector task implementation

Pre-requisites

  • Deploy the SimpleStockQuoteService in the sample Axis2 server and start Axis2
  • Start Synapse using the configuration numbered 302 (repository/conf/sample/synapse_sample_302.xml)
    Unix/Linux: sh synapse.sh -sample 302
    Windows: synapse.bat -sample 302

Executing the Client

The above configuration adds a scheduled task, and a proxy service to the Synapse runtime. The task is configured to run every 5 seconds (note the 'interval' attribute on the 'trigger' element).

In this sample, the proxy service "SampleProxy" will be invoked by the task and then from the proxy service, the injected messages will be sent to the sample Axis2 server, which will send back a response to Synapse. So every 5 seconds you will notice that Axis2 is generating a quote and Synapse is receiving the stock quote response. You will also see the "SampleProxy invoked" message getting logged on the console.

Back to Catalog