Menu

Archive for year 2014

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.

Read More...

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.

Read More...

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.

Read More...

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.

Read More...

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.

Read More...

Distributed Semaphores with RabbitMQ

February 19, 2014 by Alvaro Videla

In this blog post we are going to address the problem of controlling the access to a particular resource in a distributed system. The technique for solving this problem is well know in computer science, it’s called Semaphore and it was invented by Dijkstra in 1965 in his paper called “Cooperating Sequential Processes”. We are going to see how to implement it using AMQP’s building blocks, like consumers, producers and queues.

Read More...

Preventing Unbounded Buffers with RabbitMQ

January 23, 2014 by Alvaro Videla

Different services in our architecture will require a certain amount of resources for operation, whether these resources are CPUs, RAM or disk space, we need to make sure we have enough of them. If we don’t put limits on how many resources our servers are going to use, at some point we will be in trouble. This happens with your database if it runs out of file system space, your media storage if you fill it with images and never move them somewhere else, or your JVM if it runs out of RAM. Even your back up solution will be a problem if you don’t have a policy for expiring/deleting old backups. Well, queues are no exception. We have to make sure that our application won’t allow the queues to grow for ever. We need to have some strategy in place to delete/evict/migrate old messages.

Read More...