WS-Eventing Implementation 

WS-Eventing Application

It took me half of today to implement a WS-Eventing based service, together with service control application and demonstration client.

I took Plumbwork.Orange implementation of WS-Eventing stack. It includes WSE 2.0 based implementation of WS-Eventing specification, written by John Bristowe. Latest post about updates can be found here.

How it works

Windows service queries message queue (MSMQ) after the period elapses. If it finds any messages, they are dispatched to all registered clients.

There is a service control application, which can enroll new messages into the queue.

There's also a simple client which you can use to register and receive notifications.


You can download the bits from here:

  • Installer package for WS-Eventing windows service, which does registrations and sends notifications back. Grab it here. Source is available here.
  • Source code, which you can use to compile the service control application. Grab it here.
  • Source code, which you can use to compile the WS-Eventing client. Grab it here.

Do the following:

  • Install WS-Eventing service.
  • Update WSEventingService.exe.config with desired endpoint address, MSMQ query period and queue name
  • Give LOCAL SERVICE account permissions to write/modify the c:\ directory. By default Plumbwork.Orange.Eventing.dll will write subscriptions file (called subscriptions.xml) there.
  • Start the service using SCM (Service Control Manager). Service will automatically create the specified queue. Note: You should have Message Queuing installed.
  • Start the service control application.
  • Start the client. It will register automatically.
  • Send notification using the service control application and watch it emerge on the client side.

If you get into trouble, please email me. Have fun!

Categories:  Web Services | Work | XML
Sunday, August 22, 2004 10:49:46 PM (Central Europe Standard Time, UTC+01:00)  #    Comments


Wednesday, March 2, 2005 4:45:37 PM (Central Europe Standard Time, UTC+01:00)
I have implemented this also and have had some success. One thing that I did have an issue with though, is that if MSMQ is not running (available) the outbound message is lost.

If MSMQ is not running in this scenario, I lose the event message and that causes me loads of problems. I have tried creating a database table for use in my event source that contains outbound service messages. I write the outbound message, MessageID, Timestamp and End Point Location to the table and this forms part of the transaction that builds the event data.

I then wrap the submission of the message to MSMQ and the marking of the outbound message in the table as complete within another transaction. This means that if the message is not able to be placed in the queue, it remains in the 'Outbound' table of the service. Only when the message makes its way into the queue does the message get marked as done. The only problem I have with this is that I now need another Windows Service, scheduled process etc. to continue to try placing the message into the queue.

It just seems to be quite a lot of overhead to get what should be a relatively simple process to work in a fairly robust fashion. Is this going to be addressed using WS-ReliableMessaging and is there a current implementation of this? Also, I read recently that Indigo will not be supporting WS-Eventing in its first release even though this is likely to be mid-late 2006. They do say though that it is simple to create pub/sub functionality. Is WS-Eventing the way of the future for this stuff? Are you looking to incorporate this with regard to Entity Aggregation in a Service-Oriented Enterprise?

Love to hear anyones' thoughts on this.

Thursday, June 21, 2007 7:49:00 PM (Central Europe Standard Time, UTC+01:00)

How to get the message (function) timestamp ? I need to know when the message have been put in the MSMQ of the service.

Alain Trépanier
All comments require the approval of the site owner before being displayed.
Home page

Comment (HTML not allowed)  

Enter the code shown (prevents robots):

Live Comment Preview
Copyright © 2003-2024 , Matevž Gačnik
Recent Posts
RSS: Atom:

The opinions expressed herein are my own personal opinions and do not represent my company's view in any way.

My views often change.

This blog is just a collection of bytes.

Copyright © 2003-2024
Matevž Gačnik

Send mail to the author(s) E-mail