Hydra

Hydra is a simple, highly redundant pull-based messaging system. It uses CouchDb as its message store, and replication to deliver messages. It can be used by any language capable of making HTTP calls, and a C# client implementation is included.

Thumbnail

Hydra is a simple, highly redundant, pull-based publish/subscribe message bus. In more detail:
  • Publish/subscribe. Applications wanting to send messages publish them to Hydra. Messages contain standard properties such as Topic, Source and Destination and, of course, message data. Applications wanting to receive messages request them from Hydra by property e.g. all messages with a given Topic, or ones to a given Destination.
  • Highly redundant. Hydra is based around a network of replicated message stores. Applications can publish and subscribe using any available message store, and messages will be replicated to all other stores. If a store fails, clients can switch to another store seamlessly. If a store becomes disconnected from the network, local clients can continue using it for local messaging, and it will catch up with missed remote messages when the network is re-established.
  • Simple. The C# client implementation is under three hundred lines of code, and the server-side code is a handful of lines of JavaScript.
  • Pull-based. Most publish/subscribe systems have a server infrastructure that maintains information on which clients are subscribed for which message types, and then pushes messages out to those clients. Hydra has no such infrastructure: instead clients poll their local message store and pull messages of interest.

Hydra's simplicity is made possible by using CouchDb as the message store. This takes care of message delivery between store instances, using CouchDb's native replication mechanism.

News

Documentation is now only on GitHub, as there seems no advantage in maintaining it twice.

A Java client is in development. Code is fully functional and being prepared for alpha release. Take a look at the JavaClient git branch if you want to see the latest state.

The state of the project

Hydra is in production use, in a messaging system delivering up to 2,000,000 messages per day. But the documentation and instructions are not yet ready for public consumption, so you need to be ready to do some discovery for yourself. But there are examples of "standard" use included in both the code and the Documentation wiki pages, so it should not be too hard to get going.

Getting started

Take a look at the Documentation wiki and then download the code from the Source Code tab and follow the instructions in the Readme file.

Questions/feedback

Questions and suggestions are very welcome - please submit them on the Discussions page.

Last edited Jul 27, 2013 at 12:55 PM by NickNorth, version 14