Sample 300: Introduction to Synapse Tasks

<definitions xmlns="http://ws.apache.org/ns/synapse"> <task class="org.apache.synapse.startup.tasks.MessageInjector" name="CheckPrice"> <property name="to" value="http://localhost:9000/services/SimpleStockQuoteService"/> <property name="soapAction" value="urn:getQuote"/> <property name="format" value="soap11"/> <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> <sequence name="main"> <in> <send/> </in> <out> <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> </out> </sequence> </definitions>

Objective

Demonstrate how to schedule tasks in the Synapse runtime for periodic execution

Pre-requisites

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

Executing the Client

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

One can write his/her own tasks implementing the org.apache.synapse.task.Task interface and programming the 'execute' method to run the necessary logic. For this particular sample we have used the MessageInjector class which just injects a message into Synapse environment. In the configuration we have set the message payload to be the stock quote request payload.

In this sample, 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.

Back to Catalog