##Burrow.NET, Release 1.0.x (since Mar 12, 2012) ###This project is no longer under active development, that means there won't be any new features. However, I'll fix bugs and minor things such as dependency issues.
##1. INTRODUCTION
This project is created based on the idea of EasyNetQ, since Mike Hadlow used MIT licence, I hope he doesn't mind when I use his source code in this project.
I was so lucky to have chances to work with RabbitMQ in my 2 recent companies. EasyNetQ is the library I looked into at first place. Honestly, It's a good implementation, the author covered many problems he got with RabbitMQ and I learnt from that as well. However, I created this project for below reasons:
- I need an easier & flexible way to define Exchange names and Queue names by my conventions
- I need to have different priority queues for messages
- I need my app to fail over to alive RabbitMQ node in a cluster
- I need more flexibilities to inject behaviors for logging, error handling, object serializing, etc.
- And I want to be busy :D
Burrow.NET has been supporting all of those and other things, we've been using this library in many apps in our production environment to process million of messages a day.
Alright, to publish a message, you just need something like:
var tunnel = RabbitTunnel.Factory.Create();
tunnel.Publish(new OrderDetail
{
Name = "Google Nexus 7",
Color = "Black",
Amount = 1
});
To subscribe:
var tunnel = RabbitTunnel.Factory.Create();
tunnel.Subscribe(new SubscriptionOption<OrderDetail>
{
BatchSize = 2,
MessageHandler = (msg) =>
{
// Process message here
},
QueuePrefetchSize = 10,
SubscriptionName = "SubscriptionKey"
});
Ofcourse you're gonna need a connection string to RabbitMQ server, exchange and queue defined to make it work. Please go to document page for more details how to run the test projects.
Beside Burrow.NET, I have implemented Burrow.Extras and Burrow.RPC which provide some utilities to play with RabbitMQ using C# such as priority queue implementation and RPC.
##2. WHERE TO START?
- Install RabbitMQ
- Create exchange (type *direct): Burrow.Exchange
- Create queue: Burrow.Queue.BurrowTestApp.Bunny
- Bind above queue to exchange Burrow.Exchange
- Get latest source code
- Run Burrow.Publisher to publish messages
- Run Burrow.Subscriber to subscribe messagages asynchronously from the queue.
##3. DOCUMENT
Documentation can be found at github wiki page: https://github.com/vanthoainguyen/Burrow.NET/wiki/_pages
Some blog posts:
- Messaging with RabbitMQ and Burrow.NET
- RabbitMQ Exchanges & Queues naming convention with Burrow.NET
- Custom Burrow.NET TunnelFactory & RabbitMQ
- Things you can easily change in Burrow.NET
- Programmatically create RabbitMQ Exchange and Queue with Burrow.NET
- Priority With RabbitMQ implementation in .NET
- Implement RPC service using Burrow.NET and RabbitMQ
- Monitor RabbitMQ queues & count total messages
- Using RabbitMQ Header Exchange with Burrow.NET
Nuget library is also added at http://nuget.org/packages/Burrow.NET
##4. LICENCE http://sam.zoy.org/wtfpl/COPYING