GithubHelp home page GithubHelp logo

lukasz-lysik / burrow.net Goto Github PK

View Code? Open in Web Editor NEW

This project forked from vantheshark/burrow.net

0.0 2.0 0.0 10.69 MB

Burrow.NET is a simple library created based on some EasyNetQ ideas, it's a thin wrapper of RabbitMQ.Client for .NET. Basically, if you just need to put your message or subscribe messages from RabbitMQ server, you found the right place. With Burrow.NET, you can easily customize almost everything start with exchange and queue name, changing the way to serialize your object, inject custom error handling strategies, etc.

Home Page: https://github.com/vanthoainguyen/Burrow.NET/wiki/Get-started-with-Burrow.NET

Batchfile 0.03% C# 99.97%

burrow.net's Introduction

Burrow

Burrow.NET, Release 1.0.x (since Mar 12, 2012)

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

burrow.net's People

Contributors

vantheshark avatar richardprior avatar sovanesyan avatar

Watchers

James Cloos avatar Simon Hughes avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.