Distributed Pub Sub Event System Version 3.0

Rating: No reviews yet
Downloads: 3213
Released: Jul 18, 2013
Updated: Oct 3, 2013 by keithh
Dev status: Stable Help Icon

Recommended Download

Documentation WSP Event System Whitepaper
documentation, 650K, uploaded Nov 26, 2012 - 1660 downloads

Other Available Downloads

Application x64 Debug Setup (
application, 1734K, uploaded Oct 3, 2013 - 496 downloads
Application x64 Release Setup (
application, 892K, uploaded Oct 3, 2013 - 484 downloads
Documentation Wsp Event System Overview
documentation, 330K, uploaded Aug 20, 2013 - 573 downloads

Release Notes


Wsp 3.0 is NOT backward compatible with Wsp 2.1.


You need to install the Microsoft Visual C++ 2010 Redistributable Package. You can find it at:
x64 http://www.microsoft.com/download/en/details.aspx?id=14632
x86 http://www.microsoft.com/download/en/details.aspx?id=5555

Wsp now uses Rx (Reactive Extensions) and .Net 4.0

3.0 Enhancements

I changed the topology from a hierarchy to peer-to-peer groups. This should provide much greater scalability and more fault-resilience. It also means event routing is more deterministic since the maximum number of hops is four. Today Wsp is installed on >9,000 production servers across 24 data centers. With this new topology, the goal is to support 100,000+ servers.

I changed the event format to a more standard format of standard headers, custom headers, and body. The two primary values to this format is you can apply event filtering based upon headers without having to deserialize the body itself. The second value is you can use your own serializor for the body (which is your object) which can be more performant than the built-in serializer. As an example, protobuf-net might be a nice choice which can handle richer data structures and is more performant.

I implemented an Rx (Reactive Extensions) interface for Wsp. If you choose to use Rx with Wsp, it means your events can go cross-process and cross-machine using a multicast paradigm. See the WspEventListenTest and WspEventServiceTest examples for using Rx.

The entire config file format has changed. The config file is simplified for large installations and it now has the concept of groups. A machine can be in one of two roles: node or hub. If it's a hub then it needs to be specified as a hub in its group section. If it's a node, it will connect to one of the hubs specified in its group section. For fault-resilience, you would want at least 3 hubs per group and they should be able to support ~500 nodes.

To use the built-in logging feature in Wsp, you need to use the Wsp serializer for your event body so it knows how to deserialize your event.


I still need to write an installation document. In the meantime, feel free to ask questions.

Reviews for this release

No reviews yet for this release. (Previous release: 5 stars out of five with 1 rating and 1 review)