Sample 663: Using Multiple Sequences
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 demonstrates how a complex sequence can be separated into a set of simpler sequences. In this sample, you will send a simple request to a back-end service (StockQuoteService
microservice) and receive a response. If you look at the sample's XML configuration, you will see how this mediation is performed by two separate sequence definitions instead of one main sequence.
Prerequisites
For a list of prerequisites, see Prerequisites to Start the ESB Samples.
Building the sample
Expand the link given below to see the XML configuration of this sample. This configuration file (synapse_sample_663.xml)
is available in the <EI_HOME>/samples/service-bus
directory.
Executing the sample
Send the following request to invoke the sample proxy service (named SequenceBreakdownSampleProxy
) in the sample.
curl -v http://localhost:8280/services/SequenceBreakdownSampleProxy -H'Content-Type:application/xml' -d'<symbol>IBM</symbol>'
When this request is sent, SequenceBreakdownSampleProxy
calls the StockQuoteSeq
sequence. This sequence calls CallStockQuoteSeq
and TransformAndRespondSeq
respectively. In CallStockQuoteSeq
, according to the symbol that is sent, the endpoint that is being called is switched using the /wiki/spaces/EI6xx/pages/49612596. Once the response is received from the endpoint, it is transformed with TransformAndRespondSeq
, and sent back to the client. Also, note that an error sequence has been defined for each sequence, which will be executed in case of an error.
Analyzing the output
The output in the log for the above sample request would be as follows:
[2017-06-26 18:56:11,877] [EI-Core] INFO - LogMediator SEQUENCE = StockQuoteSeq|DESCRIPTION = Request recieved [2017-06-26 18:56:11,880] [EI-Core] INFO - LogMediator SEQUENCE = CallStockQuoteSeq|DESCRIPTION = Calling IBM endpoint [2017-06-26 18:56:11,941] [EI-Core] INFO - LogMediator SEQUENCE = CallStockQuoteSeq|DESCRIPTION = Response received from IBM endpoint [2017-06-26 18:56:11,942] [EI-Core] INFO - LogMediator SEQUENCE = TransformAndRespondSeq|DESCRIPTION = Response is ready to be transformed [2017-06-26 18:56:11,958] [EI-Core] INFO - LogMediator SEQUENCE = TransformAndRespondSeq|DESCRIPTION = Responding back to the client with the transformed response
As shown in the above log, since the “symbol” that is sent in the request is “IBM”, the request is routed to the IBM endpoint. Once the response from the IBM endpoint is received, it is transformed according to the specified template and sent to the client.
Shown below is the response that will be received by the client.
<Information> <Name>International Business Machines</Name> <Last>149.62</Last> <High>150.78</High> <Low>149.18</Low> </Information>