Flow Control In RabbitMQ

Recently I wrote an article about an item that the RabbitMQ team has been working on lately, in which the scalability of routing was discussed. Mildly related to this is a further piece of work that has been carried out over the last few months - introducing producer flow control. This article describes what it is and how you can use it in RabbitMQ. It is assumed that the reader has some familiarity with the AMQP model and also having some knowledge of Erlang would be useful, but not essential. Readers who are not interested in the background of the protocol can jump forward to the practical side of this article.

Click to read more ...

Posted on Sunday, November 9, 2008 at 03:25PM by Registered Commenter0x6e6562 in , | Comments1 Comment

Measuring Scalability

One of the items that the RabbitMQ team has been concentrating on recently, is a major piece of refactoring that intends to achieve linear scalability of routing within the message broker. Actually doing the refactoring work turned out to be a lot less effort than designing and implementing a strategy to verify that the resulting patch set did indeed scale linearly. This is an article about the approach that was taken in order to measure the scalability of the system. It is assumed that the reader is familiar with the execution model of AMQP.

Click to read more ...

Posted on Friday, November 7, 2008 at 01:10AM by Registered Commenter0x6e6562 in , | Comments2 Comments

Consumer Driven Messaging

A fair while ago, Kirk Wylie wrote an article about some of the conceptual mistakes he felt were made in the specification of the AMQP protocol. Amongst other observations, he made the point that a producer should require no knowledge of the routing semantics of an exchange in order to send a message. He observes that this currently may not be the case, and hence questions the consistency of the model.

Click to read more ...

Posted on Tuesday, October 7, 2008 at 01:39AM by Registered Commenter0x6e6562 in | Comments4 Comments

Multithreading AMQP Clients

Although this is not stated explicitly in the protocol, a channel is the smallest unit of parallelism in AMQP. You should bind an AMQP channel to a client thread, so that a channel is managed as a thread-local object. But what if you're using the same channel in multiple threads? The short answer: don't. This article summarizes some questions that have asked by people writing and using AMQP client libraries in a multithreaded fashion and provides some general advice about how to deal with parallelism in this context.

Click to read more ...

Posted on Tuesday, October 7, 2008 at 12:11AM by Registered Commenter0x6e6562 in | CommentsPost a Comment

Simple AMQP Library for Ruby

Aman Gupta has just completed a Ruby client implementation of AMQP that is now available on his Github repository. This article describes the background of this project, the motivation behind a Ruby AMQP implementation and demonstrates some working code examples. This article will be of interest to you if you are looking for a simple Rubyesque API for interfacing with enterprise grade messaging.

Click to read more ...

Posted on Tuesday, July 22, 2008 at 07:43AM by Registered Commenter0x6e6562 in , | Comments3 Comments | References8 References