Sample 301: Message Injector Task to invoke a named sequence

<definitions xmlns="http://ws.apache.org/ns/synapse"> <task class="org.apache.synapse.startup.tasks.MessageInjector" name="InjectToSequenceTask"> <property name="soapAction" value="urn:getQuote"/> <property name="format" value="soap11"/> <property name="injectTo" value="sequence"/> <property name="sequenceName" value="SampleSequence"/> <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="SampleSequence"> <log level="custom"> <property name="MSG" value="SampleSequence invoked"/> </log> <send receive="receivingSequence"> <endpoint> <address uri="http://localhost:9000/services/SimpleStockQuoteService"/> </endpoint> </send> </sequence> <sequence name="receivingSequence"> <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> </sequence> </definitions>

Objective

Demonstrate how to schedule tasks to invoke a named sequence 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 301 (repository/conf/sample/synapse_sample_301.xml)
    Unix/Linux: sh synapse.sh -sample 301
    Windows: synapse.bat -sample 301

Executing the Client

The above configuration adds a scheduled task and sequences 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 sequence "SampleSequence" will be invoked by the task and then from the sequence, 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 "SampleSequence invoked" message getting logged on the console.

Back to Catalog