Posts written by Alvaro VidelaDecember 28, 2015
We are pleased to announce the immediate availability of RabbitMQ
3.6.0, a new version of the broker that comes packed with lot of
new features. Before
we go on, you can obtain it here:
This release brings many improvements in broker features, development
environment for our contributors, and security. Let’s take a look at
some of the most significant ones.
October 6, 2015
In order to prevent fast publishers from overflowing the broker with
more messages than it can handle at any particular moment, RabbitMQ
implements an internal mechanism called credit flow that will be
used by the various systems inside RabbitMQ to throttle down
publishers, while allowing the message consumers to catch up. In this
blog post we are going to see how credit flow works, and what we can
do to tune its configuration for an optimal behaviour.
April 16, 2015
For a while people have looked for ways of implementing delayed
messaging with RabbitMQ. So far the accepted solution was to use a mix
of message TTL and
Dead Letter Exchanges as proposed
by James Carr
a while we have thought to offer an out-of-the-box solution for this,
and these past month we had the time to implement it as a
RabbitMQ Delayed Message Plugin.
February 19, 2014
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.
January 23, 2014
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.
December 16, 2013
With RabbitMQ 3.2.0 we introduced Consumer Priorities which not surprisingly allows us to set priorities for our consumers. This provides us with a bit of control over how RabbitMQ will deliver messages to consumers in order to obtain a different kind of scheduling that might be beneficial for our application.
When would you want to use Consumer Priorities in your code?
June 3, 2013
RabbitMQ is a very extensible message broker, allowing users to extend the server’s functionality by writing plugins. Many of the broker features are even shipped as plugins that come by default with the broker installation: the Management Plugin, or STOMP support, to name just a couple. While that’s pretty cool, the fact that plugins must be written in Erlang is sometimes a challenge. I decided to see if it was possible to write plugins in another language that targeted the Erlang Virtual Machine (EVM), and in this post I’ll share my progress.