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
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