Skip to content

Latest commit

 

History

History
90 lines (65 loc) · 4.17 KB

README.md

File metadata and controls

90 lines (65 loc) · 4.17 KB

Burrow

##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:

Nuget library is also added at http://nuget.org/packages/Burrow.NET

##4. LICENCE http://sam.zoy.org/wtfpl/COPYING Troll