Overview documentation

Sep 30, 2011 at 11:38 AM

I am interested in using the pub/sub event system. However I am finding it difficult to evaluate it because I cannot find an overview of the framework.

I am thinking of things like

  • Types of events
  • What messaging patterns are possible
  • How to build in resiliance
  • etc....

Is there any documentation (documents/blogs/wikis/anything) that could help me understand how it supposed to be used.

The code examples are fine but simple. I am considering designing a soution utilising this product (or something similar), so I really need an overview.

Any help is appriciated

Coordinator
Oct 6, 2011 at 12:02 AM

I haven't written any newer docs to explain more the pub/sub system. In our internal applications, we use the pub/sub system as a really fast communication infrastructure. Usually, the guids used by the application are contained in a config file but defined by role. When the application is installed, you simply specify its role. It looks in the config file for the guids to use for that role. The application then begins publishing events with that guid or subscribing to events with that guid. The pub/sub system routes the events to all nodes where a subscription for that guid exists. A nice thing about the model is you can build and test on a single machine but deploy the components across many machines and the application knows nothing about the physical topology.

You will find sample code for publishing and subscribing to events. The subscriber in the sample will only subscribe to events on the same machine. If you want to run the sample across machines you need to change the subscription line of code.

You will find the ping pong sample which uses a request/response pattern. In this, the publisher subscribes to guid1 and publishes an event with guid1 in the data. The subscribing application receives the initial event and publishes and event back using guid1. This sample application will run across machines.

The pub/sub system has a lot of resilience built in. It does queuing to handle variable loads and it can handle temporary network interruptions.

At some point I hope to make time to update the docs which are quite old, I have been busy though deploying the system to 7000+ servers.