...
Figure 1: Datatype Channel EIP
Example scenario
The This example scenario depicts a Stock Quote
service deployed in Axis2 server. It offers several service operations to the user. The ESB uses the filter mediator to identify each action that is specified by the sender and diverts the request into the appropriate sequence. Each sequence acts as a separate channel. The sender experiences the decomposition of channels through a log message indicated by the ESB. There will be a different log message for each operation the sender requests.
The following diagram below depicts how to simulate the this example scenario can be depicted using the ESB.
Figure 2: Example scenario of the Datatype Channel EIP
Before digging into implementation details, let's take a look at the relationship between the example scenario and the Datatype Channel EIP by comparing their core components.
Datatype Channel EIP (Figure 1) | Datatype Channel Example Scenario (Figure 2) |
---|---|
Sender | Client |
Datatype Channel |
the ESB |
. | |
Receiver | Stock Quote Service |
The ESB configuration
Given below is the ESB configuration for simulating the example scenario explained above.
Anchor | ||||
---|---|---|---|---|
|
Code Block |
---|
<definitions xmlns="http://ws.apache.org/ns/synapse"> <endpoint name="StockQuoteReceiver"> <address uri="http://localhost:9000/services/SimpleStockQuoteService"/> </endpoint> <sequence name="MarketActivity"> <log level="custom"> <property name="Messaging_Channel" value="MARKET_ACTIVITY"/> </log> <send> <endpoint key="StockQuoteReceiver"/> </send> </sequence> <sequence name="FullQuote"> <log level="custom"> <property name="Messaging_Channel" value="FULL_QUOTE"/> </log> <send> <endpoint key="StockQuoteReceiver"/> </send> </sequence> <sequence name="StockQuote"> <log level="custom"> <property name="Messaging_Channel" value="STOCK_QUOTE"/> </log> <send> <endpoint key="StockQuoteReceiver"/> </send> </sequence> <proxy name="datatype-channel-proxy" startOnLoad="true" transports="http https"> <target> <log/> <inSequence> <switch source="get-property('Action')"> <case regex="/*urn:getQuote/*"> <sequence key="StockQuote"/> </case> <case regex="/*urn:getFullQuote/*"> <sequence key="FullQuote"/> </case> <case regex="/*urn:getMarketActivity/*"> <sequence key="MarketActivity"/> </case> </switch> </inSequence> <outSequence> <respond/> </outSequence> </target> </proxy> </definitions> |
Excerpt | ||
---|---|---|
| ||
The configuration elements The elements used in the above ESB configuration are explained below.
|
Simulating the example scenario
...
You need to set up the ESB, and the back-end service:
- Download the
Datatype_1.0.0.zip
file, which includes the ESB configuration described above. See Setting up the Environment for instructions on setting up the ESB and the back-end service.
Info When you set up the environment, note that you only need to start one instance of the back-end service (Stock Quote Service) to simulate this example.
Executing the sample
Let's send a request to the ESB using the Stock Quote Client application. Find out more about the Stock Quote Client from the ESB documentation.
...
- samples.services.SimpleStockQuoteService :: Generating Market activity report for : [JLN, FDZ, EQR, XNV, RDR, CZC, LIY, ZEP, ZJX, GWO, STS, NQU, RMA, UUR, PFL, ZEF, IYU, ZLV, KTW, PUN, IOZ, PZJ, HAE, PSL, CQM, CLX, BWI, UYF, QWC, EKB, LMM, UQI, GZA, KRC, GFB, DWM, ETA, SRS, VEP, ZTS, TNE, FJF, LNV, QBY, ZIO, HBS, IIW, SNO, MMO, BTY, OGJ, OUW, CLW, OZT, MXB, HNK, FQC, VEI, BLD, LUP, PHR, JUQ, MZM, GIL, EVE, UAH, SHV, WYS, MAG, XBX, ZYB, MUX, MUO, DAM, DVR, RDF, LGB, KGS, DWP, ZAG, SDF, BSF, CTX, MKG, YTO, RRX, OVJ, MEZ, ODU, JGU, GQB, SLW, UCQ, GDI, DIO, BKV, UUQ, JES, TAZ, AAU]
samples.services.SimpleStockQuoteService :: Full quote for : IBM
ESB Profile logs:
INFO - LogMediator Messaging_Channel = MARKET_ACTIVITY
INFO - LogMediator Messaging_Channel = FULL_QUOTE