Sample 300: Introduction to Tasks with a Simple Trigger
Note that WSO2 EI is shipped with the following changes to what is mentioned in this documentation:
<PRODUCT_HOME>/
repository/samples/
directory that includes all Integration profile samples is changed to<EI_HOME>/
samples/service-bus/
.<PRODUCT_HOME>/
repository/samples/resources/
directory that includes all artifacts related to the Integration profile samples is changed to<EI_HOME>/
samples/service-bus/resources/
.
Introduction
This sample introduces the concept of tasks and demonstrates how a simple trigger works. Here the MessageInjector
class is used, which injects a specified message to the ESB environment. You can write your own task class implementing the org.apache.synapse.startup.Task
interface and implement the execute
method to run the task.
Prerequisites
For a list of prerequisites, see Prerequisites to Start the ESB Samples.
Building the sample
The XML configuration for this sample is as follows:
<definitions xmlns="http://ws.apache.org/ns/synapse"> <task class="org.apache.synapse.startup.tasks.MessageInjector" group="synapse.simple.quartz" name="CheckPrice"> <property name="to" value="http://localhost:9000/services/SimpleStockQuoteService"/> <property name="soapAction" value="urn:getQuote"/> <property name="message"> <m0:getQuote xmlns:m0="http://services.samples" xmlns="http://ws.apache.org/ns/synapse"> <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 name="Stock_Quote_on" expression="//ns:return/ax21:lastTradeTimestamp/child::text()" xmlns:ax21="http://services.samples/xsd" xmlns:ns="http://services.samples"/> <property name="For_the_organization" expression="//ns:return/ax21:name/child::text()" xmlns:ax21="http://services.samples/xsd" xmlns:ns="http://services.samples"/> <property name="Last_Value" expression="//ns:return/ax21:last/child::text()" xmlns:ax21="http://services.samples/xsd" xmlns:ns="http://services.samples"/> </log> </out> </sequence> </definitions>
This configuration file synapse_sample_300.xml
is available in the <ESB_HOME>/repository/samples
directory.
To build the sample
Build and deploy the back-end service SimpleStockQuoteService. For instructions on deploying sample back-end services, see Deploying sample back-end services.
Start the Axis2 server. For instructions on starting the Axis2 server, see Starting the Axis2 server.
Executing the sample
- Start the ESB with the sample 300 configuration. For instructions on starting a sample ESB configuration, see Starting the ESB with a sample configuration.
The synapse_sample_300.xml
configuration adds a scheduled task to the ESB runtime so that when you start the ESB, this task will run periodically every 5 seconds. You can limit the number of times that you want the task to run by adding a count
attribute with an integer as the value
. If the count is not present as in this sample, the task will run forever.
Analyzing the output
You will see that the Axis2 server generates a quote every 5 seconds and that the ESB receives the stock quote response. This is because the injected message is sent to the sample Axis2 server, which sends back a response to the ESB.