Posts written by Simon MacMullen

Understanding memory use with RabbitMQ 3.4

October 30, 2014 by Simon MacMullen

“How much memory is my queue using?” That’s an easy question to ask, and a somewhat more complicated one to answer. RabbitMQ 3.4 gives you a clearer view of how queues use memory. This blog post talks a bit about that, and also explains queue memory use in general.


Finding bottlenecks with RabbitMQ 3.3

April 14, 2014 by Simon MacMullen

One of the goals for RabbitMQ 3.3 was that you should be able to find bottlenecks in running systems more easily. Older versions of RabbitMQ let you see that you were rate-limited but didn’t easily let you see why. In this blog post we’ll talk through some of the new performance indicators in version 3.3.


Consumer Bias in RabbitMQ 3.3

April 10, 2014 by Simon MacMullen

I warn you before we start: this is another wordy blog post about performance-ish changes in RabbitMQ 3.3. Still with us? Good.

So in the previous post I mentioned “a new feature which I’ll talk about in a future blog post”. That feature is consumer bias.


An end to synchrony: performance improvements in 3.3

April 3, 2014 by Simon MacMullen

Well, we got the bad news out of the way yesterday, so today let’s talk about (some of) the good news: some types of publishing and consuming are now a great deal faster, especially in clusters.


Breaking things with RabbitMQ 3.3

April 2, 2014 by Simon MacMullen

What? Another “breaking things” post? Well, yes, but hopefully this should be less to deal with than the previous one. But there are enough slightly incompatible changes in RabbitMQ 3.3.0 that it’s worth listing them here.


Federated queues in 3.2.0

October 23, 2013 by Simon MacMullen

So we added support for federated queues in RabbitMQ 3.2.0. This blog post explains what they’re for and how to use them.


RabbitMQ 3.1... in images

May 1, 2013 by Simon MacMullen



What's new in RabbitMQ 3.0?

November 20, 2012 by Simon MacMullen

So we’ve talked about how RabbitMQ 3.0 can break things, but that’s not very positive. Let’s have a look at some of the new features! Just some of them - quite a lot changed in 3.0, and we don’t have all day…


RabbitMQ Performance Measurements, part 2

April 25, 2012 by Simon MacMullen

Welcome back! Last time we talked about flow control and latency; today let’s talk about how different features affect the performance we see. Here are some simple scenarios. As before, they’re all variations on the theme of one publisher and one consumer publishing as fast as they can.


RabbitMQ Performance Measurements, part 1

April 16, 2012 by Simon MacMullen

So today I would like to talk about some aspects of RabbitMQ’s performance. There are a huge number of variables that feed into the overall level of performance you can get from a RabbitMQ server, and today we’re going to try tweaking some of them and seeing what we can see.


rabbitmq-tracing - a UI for the firehose

September 9, 2011 by Simon MacMullen

While the firehose is quite a cool feature, I always thought that it was a shame we didn’t have a simple GUI to go on top and make it accessible to system administrators. So I wrote one. You can download it here.


Federation plugin preview release

June 22, 2011 by Simon MacMullen

Note: this blog post talks about the federation plugin preview that was released for RabbitMQ 2.5.0. If you’re using 2.6.0 or later, federation is part of the main release; get it the same way you would any other plugin.

Another day, another new plugin release ๐Ÿ˜ƒ Today it’s federation. If you want to skip this post and just download the plugin, go here. The detailed instructions are here.

The high level goal of federation is to scale out publish / subscribe messaging across WANs and administrative domains.

To do this we introduce the concept of the federation exchange. A federation exchange acts like a normal exchange of a given type (it can emulate the routing logic of any installed exchange type), but also knows how to connect to upstream exchanges (which might in turn themselves be federation exchanges).


Who are you? Authentication and authorisation in RabbitMQ 2.3.1

February 7, 2011 by Simon MacMullen

RabbitMQ 2.3.1 introduces a couple of new plugin mechanisms, allowing you much more control over how users authenticate themselves against Rabbit, and how we determine what they are authorised to do. There are three questions of concern here:

  1. How does the client prove its identity over the wire?
  2. Where do users and authentication information (e.g. password hashes) live?
  3. Where does permission information live?

Question 1 is answered in the case of AMQP by SASL - a simple protocol for pluggable authentication mechanisms that is embedded within AMQP (and various other protocols). SASL lets a client and a server negotiate and use an authentication mechanism, without the “outer” protocol having to know any of the details about how authentication works.

SASL offers a number of “mechanisms”. Since the beginning, RabbitMQ has supported the PLAIN mechanism, which basically consists of sending a username and password over the wire in plaintext (of course possibly the whole connection might be protected by SSL). It’s also supported the variant AMQPLAIN mechanism (which is conceptually identical to PLAIN but slightly easier to implement if you have an AMQP codec lying around). RabbitMQ 2.3.1 adds a plugin system allowing you to add or configure more mechanisms, and we’ve written an example plugin which implements the SASL EXTERNAL mechanism.


Management plugin - preview release

September 7, 2010 by Simon MacMullen

The previously mentioned management plugin is now in a state where it’s worth looking at and testing. In order to make this easy, I’ve made a special once-only binary release just for the management plugin (in future we’ll make binary releases of it just like the other plugins). Download all the .ez files from here and install them as described here, then let us know what you think. (Update 2010-09-22: Note that the plugins referenced in this blog post are for version 2.0.0 of RabbitMQ. We’ve now released 2.1.0 - for this and subsequent versions you can get the management plugin from here).


Management, monitoring and statistics

August 6, 2010 by Simon MacMullen

For a long time the management and monitoring capabilities built into RabbitMQ have consisted of rabbitmqctl. While it’s a reasonable tool for management (assuming you like the command line), rabbitmqctl has never been very powerful as a monitoring tool. So we’re going to build something better.


RabbitMQ and AMQP 0-9-1

August 4, 2010 by Simon MacMullen

Since the beginning, RabbitMQ has implemented the 0-8 version of the AMQP specification. This was the first publicly-available version, but there’s been plenty of development since then. In particular, we’ve wanted to support the 0-9-1 version of AMQP for a while now.