-
Notifications
You must be signed in to change notification settings - Fork 0
Home
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 C# and Java client implementations are included.
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 client implementations are each a few 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.
Hydra now has an experimental Java client. The code is in the Java subdirectory for anyone who wants to take a look, and see Getting Started With Java for details of the Maven package.
Hydra now has a NuGet release. There are three packages available: Hydra-Messaging, Hydra-PubSubByType, and Hydra-Conversations. Installing either of the last two will also install the first; and installing any of them will install Hydra's JSON.NET and Reactive Extensions dependencies.
For occasional updates on new releases of Hydra, follow @_shastra on Twitter.
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.
Take a look at the Documentation guide, in particular the Installation page, and then download the code and follow the instructions in the Readme file.
Questions and suggestions are very welcome - please submit them on the Issues page.