Fusion: Eventing with SOA Part 2 - Eventing Using Synapse and WSO2 ESB

Archived Content
This article is provided for historical perspective only, and may not reflect current conditions. Please refer to relevant product page for more up-to-date product information and resources.
  • By Asanka Abeysinghe
  • 2 Jan, 2009

Fusion: Eventing with SOA - Introduction

Applies To

WSO2 Carbon 1.5
WSO2 ESB 2.0
Apache Synapse 1.2 SNAPSHOT

Table of Contents

Eventing Architecture

Synapse Eventing Core

 Synapse Eventing Architecture

Figure -1 Synapse Eventing Architecture

The core eventing implementation is carried out inside the Synapse core. An event source is implemented using a Synapse message receiver (MR). Subscriptions and subscription-related operation requests arrive at the event source. A subscription manager binds itself to an event source in order to manage, manipulate and store subscriptions. Based on the success or the failure of a request, a relevant response or a fault message is sent to the subscriber source.

Synapse accepts events through a proxy service and lets a special mediator call eventPublisher handle events. This eventing mediator gets subscription information from the event source and lets an event dispatching thread dispatch events. Events are treated as one way OUT-ONLY messages and the the implementation only provides a HTTP 202 response for event senders/publishers.

WSO2 ESB Additions to Synapse Eventing Implementation

The WSO2 ESB adds value to the Synapse eventing implementation. The management console of the WSO2 ESB provides facility to manage event source(s), configure eventPublisher mediator with proxy services and a few custom implementations of the subscription manager.

Functional Components

Event Source

Event source implementation within the WSO2 ESB 2.0 provides a service, where subscribers can send WS-Eventing (Aug-2004) complaient subscriptions and subscription related operation requests to the WSO2 ESB. The event source is capable of dispatching events, but it is recommend to use the event brokering capability that is shipped with the eventPublisher mediator to publish events.

Subscription Manager

Subscription manager implements a repository for filing subscriptions and exposes subscription handling operations for an event source. Subscriptional, renewal and unsubscription are main operations provided by the subscription manager. In addition, the subscription manager is capable of providing a subset of subscriptions matching filtering criteria.

Subscription Manager Implementations

The WSO2 ESB contains two default subscription manager implementations. Topic based In-Memory and Topic based Remote registry. In-Memory subscription manager requires two properties, and, subscriptions and the events should use the topic header name with the messages. The value inside a topic header name is subscriptions and events used by the topic based event filter to identify valid subscriptions and dispatch the events. Topic based remote registry subscription manager uses three additional properties in addition to the above. They are, URL to the remote registry, user name and the password of the remote registry.  The in-memory subscription manager will not persist subscriptions (will loose subscriptions upon WSO2 ESB  re-starts). Remote registry based subscription manager persists subscriptions in the defined remote registry ( using the remote registry as a repository).

Remote registry subscription manager stores subscription as a registry recourse, resource content is the target endpoint URL (event sink) and the subscription metadata keeping as resource properties. Resource storage paths are created taking into account subscribed topic and will maintaining topic hierarchy tree within the storage path.

Subscription Messages

The WSO2 ESB 2.0 accepts WS-Eventing compatible subscriptions and subscription related requests.

Subscription Request
<soapenv:Envelope
	xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
	<soapenv:Header xmlns:wsa="http://www.w3.org/2005/08/addressing">
		<wsa:To>
			http://localhost:8280/services/SampleEventSource
		</wsa:To>
		<wsa:MessageID>
			urn:uuid:43CF968A43DB8BE9321234756365001
		</wsa:MessageID>
		<wsa:Action>
			http://schemas.xmlsoap.org/ws/2004/08/eventing/Subscribe
		</wsa:Action>
	</soapenv:Header>
	<soapenv:Body>
		<wse:Subscribe
			xmlns:wse="http://schemas.xmlsoap.org/ws/2004/08/eventing">
			<wse:Delivery
				Mode="http://schemas.xmlsoap.org/ws/2004/08/eventing/DeliveryModes/Push">
				<wse:NotifyTo>
					<wsa:Address
						xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing">
						http://localhost:9000/services/SimpleStockQuoteService
					</wsa:Address>
				</wse:NotifyTo>
			</wse:Delivery>
			<wse:Filter
				Dialect="http://synapse.apache.org/eventing/dialect/topicFilter">
				synapse/event/test
			</wse:Filter>
		</wse:Subscribe>
	</soapenv:Body>
</soapenv:Envelope>

The above subscription message is sent to the event source URL, together with a request to forward matching events to the endpoint defined under the delivery element. Subscription has not defined an expiration time, and the system will take it as a 'never expire' subscription. Subscription request to use the topic filter by defining the relevant dialect. A subscription like the above will get a response as given below:

Subscription Response
<soapenv:Envelope
	xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
	<soapenv:Header xmlns:wsa="http://www.w3.org/2005/08/addressing">
		<wsa:Action>
			http://schemas.xmlsoap.org/ws/2004/08/eventing/SubscribeResponse
		</wsa:Action>
		<wsa:RelatesTo>
			urn:uuid:43CF968A43DB8BE9321234756365001
		</wsa:RelatesTo>
	</soapenv:Header>
	<soapenv:Body>
		<wse:SubscribeResponse
			xmlns:wse="http://schemas.xmlsoap.org/ws/2004/08/eventing">
			<wse:SubscriptionManager>
				<wsa:Address
					xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing">
					http://localhost:8280/services/SampleEventSource
				</wsa:Address>
				<wsa:ReferenceParameters
					xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing">
					<wse:Identifier>
						urn:uuid:64CA121181EFEE933E1234756365048592001-897443196
					</wse:Identifier>
				</wsa:ReferenceParameters>
			</wse:SubscriptionManager>
		</wse:SubscribeResponse>
	</soapenv:Body>
</soapenv:Envelope>

Subscription response provides a subscription ID that is defined under the identifier element. ID is required folr the subscription to interact with other requests.  Subscription requests need to be sent to the URL defined within the SubscriptionManager element.

Subscription Renew Request
<soapenv:Envelope
	xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
	<soapenv:Header xmlns:wsa="http://www.w3.org/2005/08/addressing">
		<wse:Identifier
			xmlns:wse="http://schemas.xmlsoap.org/ws/2004/08/eventing">
			urn:uuid:64CA121181EFEE933E1234756365048592001-897443196
		</wse:Identifier>
		<wsa:To>
			http://localhost:8280/services/SampleEventSource
		</wsa:To>
		<wsa:MessageID>
			urn:uuid:F6CB32A7CD42D6F0BC1234759780828
		</wsa:MessageID>
		<wsa:Action>
			http://schemas.xmlsoap.org/ws/2004/08/eventing/Renew
		</wsa:Action>
	</soapenv:Header>
	<soapenv:Body>
		<wse:Renew
			xmlns:wse="http://schemas.xmlsoap.org/ws/2004/08/eventing">
			<wse:Expires>2009-06-26T21:07:00.000-08:00</wse:Expires>
		</wse:Renew>
	</soapenv:Body>
</soapenv:Envelope>

To renew a subscription, new expiration dates need to be provided with a subscription ID. The date needs to be specified under the expires element.

Subscription Renew Response
<soapenv:Envelope
	xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
	<soapenv:Header xmlns:wsa="http://www.w3.org/2005/08/addressing">
		<wsa:Action>
			http://schemas.xmlsoap.org/ws/2004/08/eventing/RenewResponse
		</wsa:Action>
		<wsa:RelatesTo>
			urn:uuid:F6CB32A7CD42D6F0BC1234759780828
		</wsa:RelatesTo>
	</soapenv:Header>
	<soapenv:Body>
		<wse:RenewResponse
			xmlns:wse="http://schemas.xmlsoap.org/ws/2004/08/eventing">
			<wse:Expires>2009-06-26T21:07:00.000-08:00</wse:Expires>
		</wse:RenewResponse>
	</soapenv:Body>
</soapenv:Envelope>

Renew response will send new expiration date of the subscription.

Subscription Get Status Request
<soapenv:Envelope
	xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
	<soapenv:Header xmlns:wsa="http://www.w3.org/2005/08/addressing">
		<wse:Identifier
			xmlns:wse="http://schemas.xmlsoap.org/ws/2004/08/eventing">
			urn:uuid:64CA121181EFEE933E1234756365048592001-897443196
		</wse:Identifier>
		<wsa:To>
			http://localhost:8280/services/SampleEventSource
		</wsa:To>
		<wsa:MessageID>
			urn:uuid:81D76A2219F3C6B0881234759384021
		</wsa:MessageID>
		<wsa:Action>
			http://schemas.xmlsoap.org/ws/2004/08/eventing/GetStatus
		</wsa:Action>
	</soapenv:Header>
	<soapenv:Body>
		<wse:GetStatus
			xmlns:wse="http://schemas.xmlsoap.org/ws/2004/08/eventing" />
	</soapenv:Body>
</soapenv:Envelope>

Get status requires only subscription ID.

Subscription Get Status Response
<soapenv:Envelope
	xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
	<soapenv:Header xmlns:wsa="http://www.w3.org/2005/08/addressing">
		<wsa:Action>
			http://schemas.xmlsoap.org/ws/2004/08/eventing/GetStatusResponse
		</wsa:Action>
		<wsa:RelatesTo>
			urn:uuid:81D76A2219F3C6B0881234759384021
		</wsa:RelatesTo>
	</soapenv:Header>
	<soapenv:Body>
		<wse:GetStatusResponse
			xmlns:wse="http://schemas.xmlsoap.org/ws/2004/08/eventing">
			<wse:Expires>*</wse:Expires>
		</wse:GetStatusResponse>
	</soapenv:Body>
</soapenv:Envelope>
Unsubscribe Request
<soapenv:Envelope
	xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
	<soapenv:Header xmlns:wsa="http://www.w3.org/2005/08/addressing">
		<wse:Identifier
			xmlns:wse="http://schemas.xmlsoap.org/ws/2004/08/eventing">
			urn:uuid:64CA121181EFEE933E1234756365048592001-897443196
		</wse:Identifier>
		<wsa:To>
			http://localhost:8280/services/SampleEventSource
		</wsa:To>
		<wsa:MessageID>
			urn:uuid:EC76663766F0B078241234760085376
		</wsa:MessageID>
		<wsa:Action>
			http://schemas.xmlsoap.org/ws/2004/08/eventing/Unsubscribe
		</wsa:Action>
	</soapenv:Header>
	<soapenv:Body>
		<wse:Unsubscribe
			xmlns:wse="http://schemas.xmlsoap.org/ws/2004/08/eventing" />
	</soapenv:Body>
</soapenv:Envelope>
Unsubscribe Response
<soapenv:Envelope
	xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
	<soapenv:Header xmlns:wsa="http://www.w3.org/2005/08/addressing">
		<wsa:Action>
			http://schemas.xmlsoap.org/ws/2004/08/eventing/UnsubscribeResponse
		</wsa:Action>
		<wsa:RelatesTo>
			urn:uuid:EC76663766F0B078241234760085376
		</wsa:RelatesTo>
	</soapenv:Header>
	<soapenv:Body>
		<wse:UnsubscribeResponse
			xmlns:wse="http://schemas.xmlsoap.org/ws/2004/08/eventing" />
	</soapenv:Body>
</soapenv:Envelope>
Fault Responses
<soapenv:Envelope
	xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
	<soapenv:Header xmlns:wsa="http://www.w3.org/2005/08/addressing">
		<wsa:Action>
			http://www.w3.org/2005/08/addressing/fault
		</wsa:Action>
		<wsa:RelatesTo>
			urn:uuid:2D69A406E9AAEFE60D1234760763922
		</wsa:RelatesTo>
	</soapenv:Header>
	<soapenv:Body>
		<soapenv:Fault>
			<detail />
			<faultstring>Unable to Unsubscribe</faultstring>
			<faultcode
				xmlns:wse="http://schemas.xmlsoap.org/ws/2004/08/eventing">
				wse:EventSourceUnableToProcess
			</faultcode>
		</soapenv:Fault>
	</soapenv:Body>
</soapenv:Envelope>

When an error occurs for a request, the system will send a SOAP fault similar to the above.

Configure an Event Source in WSO2 ESB 2.0

1. Login to the WSO2 ESB management console. Select Event Source sub-menu Under 'Configure'.

ES-1

2. Select Add Event Source to load the event source configuration tab.

ES-2

3. Enter a unique name for the event source and select subscription manager type.

4. If you selected 'Topic Based In-Memory subscription manager', the data entry screen will look like the following:

ES-3

4. Instead if you selected 'Topic Based Remote Registry subscription manager', the data entry screen will look like the following:

ES-4


Event Broker

The WSO2 ESB 2.0 acts as an event broker dispatching events coming into the ESB. To dispatch an event, the event should fullfill requirements of the particular event source and match subscriptions using active event filter. Message brokering is done using the new mediator eventPublisher and proxy services. If there are more than one active subscription found for an event, eventPublisher will clone the message and send them out to endpoints described under the subscriptions.

Event Filtering

WSO2 ESB 2.0 comes with one filter implementation, which is topic based event filtering. It supports single topic or hierarchical topic trees. When an event arrives filter select the matching subscriptions and parent subscriptions based on the topic . As an example assume you have the following subscriptions:

 

Subscription Topic
sub1 wso2
sub2 wso2/esb
sub3 wso2/wsas
sub4 wso2/esb/mediation

When a event arrives with topic x, it will dispatch for the EPR (Endpoint Reference) defined in the subscriptions as follows:

Event Topic Matching subscriptions
wso2 sub1
wso2/esb sub1, sub2
wso2/wsas sub1, sub3
wso2/esb/mediation sub1, sub2, sub4

Event Mediation

WSO2 ESB 2.0 provides mediation capability for events with the implementation eventPublisher mediator. Events are directed to a proxy service and the proxy service can have any number of sequences that associates with different mediators and finaly falls into the eventPublisher mediator for dispatch.

event-mediation

Figure-2 Event mediation.

As illustrated in the above diagram, a message (event) will flow through a configured sequence of mediators, and finally flow into the eventPublisher mediator. This is described below in detail with sample scenarios.

Sample Event

Sample event message for the topic filtering will look like following message:

<soapenv:Envelope
	xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
	<soapenv:Header xmlns:wsa="http://www.w3.org/2005/08/addressing">
		<aip:Topic xmlns:aip="http://apache.org/aip">
			synapse/event/test
		</aip:Topic>
		<wsa:To>http://localhost:8280/services/EventingProxy</wsa:To>
		<wsa:ReplyTo>
			<wsa:Address>
				http://www.w3.org/2005/08/addressing/none
			</wsa:Address>
		</wsa:ReplyTo>
		<wsa:MessageID>
			urn:uuid:69522E7A5DBF1FCE651234773847339
		</wsa:MessageID>
		<wsa:Action>urn:event</wsa:Action>
	</soapenv:Header>
	<soapenv:Body>
		<m:placeOrder xmlns:m="http://services.samples/xsd">
			<m:order>
				<m:price>10.10</m:price>
				<m:quantity>1000</m:quantity>
				<m:symbol>GOOG</m:symbol>
			</m:order>
		</m:placeOrder>
	</soapenv:Body>
</soapenv:Envelope>

Events needs to be sent to the proxy service URL that defines the eventPublisher mediator.

Configure Event Broker in WSO2 ESB 2.0

1. Create a sequence, go to the sequence sub menu from the configuration menu.

EB-1

2. Select add sequence under the sequence editor.

EB-2

3. Give a name for the sequence.

EB-3

4. Add a child by selecting 'Core' from the menu, and 'Event' from the context menu.

EB-4

5. Select event source for the eventPublisher from the drop down, and add the sequence.

6. Assign sequence to the proxy service in the message flow.

Sample Scenarios

WSO2 ESB ships with four Eventing samples. Sample code can find from ${ESB_HOME}/samples/axis2Client/src/samples/userguide, EventSubscriber.java and EventSender.java. ESB configuration (synapse.xml) for the sample #500,#501,#502 and #503 can be found in ${ESB_HOME}/repository/samples folder. To run the sample, you need to run the Axis2 server, deploying SimpleStockQuoteService. To deploy the service, refer ESB sample setup guide [2].

Simple event mediation using Topic based In-Memory Subscription Manager

Start the ESB with sample 500

./wso2server.sh -Desb.sample=500

Windows users should use wso2server.bat

Execute the event subscriber sample client from the ${ESB_HOME}/samples/axis2Client folder.

ant eventsubscriber

Here's the configuration file for sample 500.

<definitions xmlns="http://ws.apache.org/ns/synapse">
	<eventSource name="SampleEventSource">
		<subscriptionManager
			class="org.apache.synapse.eventing.managers.DefaultInMemorySubscriptionManager">			
			<property name="topicHeaderName" value="Topic" />
			<property name="topicHeaderNS"
				value="http://apache.org/aip" />
		</subscriptionManager>
	</eventSource>

	<sequence name="PublicEventSource">
		<eventPublisher eventSourceName="SampleEventSource" />
	</sequence>

	<proxy name="EventingProxy">
		<log level="full" />
		<target inSequence="PublicEventSource" />
	</proxy>
</definitions>

To publish events, run the event sender sample from ${ESB_HOME}/samples/axis2Client folder

ant eventsender

You can see published events in the Axis2 Server console.

To get the status of subscription, you can call the eventsubscriber -Didentifier={subscription id} -Dmode=getstatus command.

 

ant eventsubscriber -Dmode=getstatus -Didentifier=urn:uuid:64CA121181EFEE933E1234756365048592001-897443196

To renew subscription, you can call the eventsubscriber with the -Didentifier={subscription id} -Dmode=renew -Dexpires={new date} command.

 

ant eventsubscriber  -Dmode=renew -Didentifier=urn:uuid:64CA121181EFEE933E1234756365048592001-897443196 -Dexpires=2009-06-26T21:07:00.000-08:00

To unsubscribe, call the eventsubscriber with -Didentifier={subscription id} -Dmode=unsubscribe command.

 

ant eventsubscriber -Dmode=unsubscribe -Didentifier=urn:uuid:64CA121181EFEE933E1234756365048592001-897443196

Using static subscriptions

Static subscriptions are subscriptions that are configured during configuration and loaded with server startups. The WSO2 ESB 2.0 does not provide UI capabilities to manage static subscriptions. Managing static subscriptions needs to be done at configuration level.

Start the WSO2 ESB with sample 501 inorder to demonstrate static subscriptions.

Configuration file for sample 501.

<definitions xmlns="http://ws.apache.org/ns/synapse">
	<eventSource name="SampleEventSource">
		<subscriptionManager
			class="org.apache.synapse.eventing.managers.DefaultInMemorySubscriptionManager">
			<property name="topicHeaderName" value="Topic" />
			<property name="topicHeaderNS"
				value="http://apache.org/aip" />
		</subscriptionManager>
		<subscription id="mysub1">
			<filter source="synapse/event/test"
				dialect="http://synapse.apache.org/eventing/dialect/topicFilter" />
			<endpoint>
				<address
					uri="http://localhost:9000/services/SimpleStockQuoteService" />
			</endpoint>
		</subscription>
		<subscription id="mysub2">
			<filter source="synapse/event/test"
				dialect="http://synapse.apache.org/eventing/dialect/topicFilter" />
			<endpoint>
				<address
					uri="http://localhost:9000/services/SimpleStockQuoteService" />
			</endpoint>
			<expires>2020-06-27T21:07:00.000-08:00</expires>
		</subscription>
	</eventSource>

	<sequence name="PublicEventSource">
		<log level="full" />
		<eventPublisher eventSourceName="SampleEventSource" />
	</sequence>

	<proxy name="EventingProxy">
		<target inSequence="PublicEventSource" />
	</proxy>
</definitions>

Due to static subscription implementation found in this sample, there is no need subscribe in advance. You can just send an event using the event sender, and output can be viewed on Axis2 server console.

Transform events before publish

This sample demonstrates mediation capability of the WSO2 ESB 2.0 for events. It uses XSLT transformation of the event before publish.

Start the WSO2 ESB with sample 502 to demonstrate event mediation.

Configuration file for sample 502 is as follows:

<definitions xmlns="http://ws.apache.org/ns/synapse">
	<eventSource name="SampleEventSource">
		<subscriptionManager
			class="org.apache.synapse.eventing.managers.DefaultInMemorySubscriptionManager">
			<property name="topicHeaderName" value="Topic" />
			<property name="topicHeaderNS"
				value="http://apache.org/aip" />
		</subscriptionManager>
		<subscription id="mysub1">
			<filter source="synapse/event/test"
				dialect="http://synapse.apache.org/eventing/dialect/topicFilter" />
			<endpoint>
				<address
					uri="http://localhost:9000/services/SimpleStockQuoteService" />
			</endpoint>
		</subscription>
	</eventSource>


	<sequence name="PublicEventSource">
		<log level="full" />
		<xslt key="xslt-key-req" />
		<log level="full" />
		<eventPublisher eventSourceName="SampleEventSource" />
	</sequence>

	<proxy name="EventingProxy">
		<target inSequence="PublicEventSource" />
	</proxy>

	<localEntry key="xslt-key-req"
		src="file:repository/samples/resources/transform/transform_eventing.xslt" />
</definitions>

Subscribe for the events using event subscriber and use event sender to publish events. You can see the transformed event sends to the service hosed in the axis2 server.

Simple event mediation using Topic based Remote Registry Subscription Manager

To run this sample, you need to run the WSO2 Registry in the same host under the HTTPs port 9446. In order to configure the registry, use the Carbon wiki page for details [4].

Start the WSO2 ESB with sample 503 to demonstrate event mediation.

Configuration file for sample 503 is given below:

<definitions xmlns="http://ws.apache.org/ns/synapse">
	<eventSource name="SampleEventSource">
		<subscriptionManager
			class="org.wso2.carbon.eventing.impl.RemoteRegistryBasedSubscriptionManager">
			<property name="registryURL"
				value="https://localhost:9446/registry/" />
			<property name="username" value="admin" />
			<property name="password" value="admin" />
			<property name="topicHeaderName" value="Topic" />
			<property name="topicHeaderNS"
				value="http://apache.org/aip" />
		</subscriptionManager>
	</eventSource>

	<sequence name="PublicEventSource">
		<log level="full" />
		<eventPublisher eventSourceName="SampleEventSource" />
	</sequence>

	<proxy name="EventingProxy">
		<target inSequence="PublicEventSource" />
	</proxy>
</definitions>

Do subscribe for the events using the event subscriber, and if you navigate to the WSO2 Registry console you can see the subscriptions get persist in the registry. You can simply send events and see the output from the axis2 server console.

Monitoring Eventing Operations in WSO2 ESB

General

WSO2 ESB 2.0 management console provides rich facilities to monitor the eventing operations. To monitor the general eventing related SOAP messages enabling tracing and use the SOAP message tracer that comes with Carbon 1.5.

1. Select SOAP tracer menu item.

ST-1

2. View messages.

ST-2

Subscriptions

Subscriptions are listed under the event source service listed on the service dashboard.

1. Go to 'Services' sub menu and select 'list'.

SUB-1

2. Available services will be listed. Select the event source using the icons displayed under the services column .

SUB-2

3. Once a service is selected, it will take you to the services' dashboard. Select 'manage event subscriptions' under the specific configuration section.

SUB-3

4. Available subscriptions will be listed, grouped by active and expired subscriptions. Subscriptions are listed with the subscription ID.

SUB-4

5. Once you click the relevant subscription, it will display subscription metadata.

SUB-5

Summary

WSO2 ESB 2.0 adds eventing capabilities to the ESB, with support for subscription management and features related to event brokering. Eventing is built based on the WS-Eventing specification (August 2004). Default distribution comes with two subscription managers, topic based in-memory and topic based remote registry, where the user has freedom to write a custom subscription manager implementation and plug that with the ESB. Eventing implementation provides powerful mediation capability for events. Based on the event brokering architecture of the WSO2 ESB, any existing mediation can configure and send messages through relevant mediators before dispatching these to endpoint(s). A new mediator called the 'eventPublisher' is added to the mediation library in order to facilitate event brokering.

The WSO2 ESB 2.0 brings EDA capability into SOA with the new eventing implementation. I will be discussing these detailed business scenarios in future articles.

Fusion : Eventing with SOA - Introduction

References

[1] Fusion: Eventing with SOA - Introduction - https://wso2.com/library/articles/fusion-eventing-soa

[2] WSO2 ESB 2.0 Sample Setup Guide - https://wso2.com/project/esb/java/2.0/docs/wso2esb-2.0-docs/wso2esb-2.0-docs/samples_setup_guide.html

[3] WSO2 ESB 2.0 Eventing Samples - https://wso2.com/project/esb/java/2.0/docs/wso2esb-2.0-docs/wso2esb-2.0-docs/samples/eventing_samples.html#Task

[4] WS-Eventing Specification - http://www.w3.org/Submission/WS-Eventing/

Author

Asanka Abeysinghe is an Architect at WSO2. asankaa at wso2 dot com

http://www.asankama.com

About Author

  • Asanka Abeysinghe
  • Deputy CTO & VP of Architecture - CTO Office
  • WSO2, Inc