Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

This section explains, through an example scenario, how the Selective Consumer EIP can be implemented using WSO2 ESB. The following topics are covered:

Table of Contents

...

The Selective Consumer EIP allows a message consumer to select which messages it wishes to will receive. It filteres filters the messages delivered by its channel so that it only receives the ones that match its criteria. For more information, refer to http://www.eaipatterns.com/MessageSelector.html.

...

This example scenario demonstrates how a specific receiver only processes messages that are pre-filtered based on certain criteria. We have an Axis2 server as the consumer. The consumer criteria is specified through an XML schema validation, which is stored as a local entry in the registry. We use the Validate mediator to check whether the messages that are sent to the ESB match the criteria of the schema. The Axis2 server can consume the message only if the message meets the validation criteria.   

...

Before digging into implementation details, let's take a look at the relationship between the example scenario and the Selective Consumer EIP by comparing their core components.

Figure 1: Selective Consumer EIP Figure 2: (Figure 1)Selective Consumer Example Scenario (Figure 2)
Specifying ProducerSimple Stock Quote Client 
Messages with Selection ValuesSimple Stock Quote Request
Selective ConsumerSchema Validator (Validate Mediator)
ReceiverSimple Stock Quote Server

Environment setup

  1. Download an and install the WSO2 ESB from http://wso2.com/products/enterprise-service-bus. For a list of prerequisites and step-by-step installation instructions, refer to Getting Started in the WSO2 ESB documentation.
  2. Start the sample Axis2 server. For instructions, refer to the section ESB Samples Setup - Starting Sample Back-End Services in the WSO2 ESB documentation.

...

Start the ESB server and log into its management console UI (https://localhost:9443/carbon). In the management console, navigate to Main Menu, click Service Bus and then Source View. Next, copy and paste the following configuration, which helps you explore the example scenario, to the source view.

Anchor
step3
step3

...

Simulating the sample scenario

 Send the following request using a SOAP client like SOAP UI SoapUI.

Code Block
languagehtml/xml
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ser="http://services.samples" xmlns:xsd="http://services.samples/xsd">
   <soapenv:Header/>
   <soapenv:Body>
      <ser:getQuote>
         <!--Optional:-->
         <ser:request>
            <!--Optional:-->
            <ser:symbol>IBM</ser:symbol>
         </ser:request>
      </ser:getQuote>
   </soapenv:Body>
</soapenv:Envelope>

...

Let's investigate the elements of the ESB configuration in detail. The line numbers below refer to the ESB configuration in step 3 shown above.

  • localEntry [line 3 in 2 in ESB config] - A local registry entry with key selective_criteria is used to define the XML schema used for validation inside the main sequence. 
  • validate [line 343] in ESB config] - This mediator is used to define the portion of a message used for validation. In this example, no source attribute is specified using an XPath expression. It makes , so the ESB perform performs the validation on the first child element of the SOAP body. 
  • scehma [line 35 34 in ESB config] - Defines which schema to use for validation. In this example, the local registry entry definition in line 3 2 is used. 
  • on-fail [line 36 5 in ESB config] - Defines what is to be carried out the action to take on failure of a validation. In this example, a fault is created and the message is dropped.