This Month in RabbitMQ, February 2020 Recap

March 10th, 2020 by Michael Klishin

This Month in RabbitMQ — February 2020 Recap!

RabbitMQ Summit is coming again! This time, the gathering will be in Berlin on June 9 and the call for proposals (to speak at the event) is open until March 22.

Mark your calendars, brush up on your Deutsch, and buy your tickets for the next chance to immerse yourself in all things RabbitMQ. I’m sure there will be at least a couple of RabbitMQ influencers there, too 🙂

Project updates

Community Writings and Resources

Learn More

Ready to learn more? Check out these upcoming opportunities to learn more about RabbitMQ:

This Month in RabbitMQ, January 2020 Recap

February 12th, 2020 by Michael Klishin

This Month in RabbitMQ, January 2020 Recap

Introducing TGI RabbitMQ! Inspired by TGI Kubernetes, RabbitMQ engineer, Gerhard Lazu has begun a series of tutorial videos. Tune in at the end of each month for the latest release. In January, Gerhard covered upgrading from 3.7 to 3.8. Star and watch the repository for future episode updates.

Also, be sure to check out the dashboards we’ve published to Grafana. These are a great way to get started with the new Prometheus and Grafana support in 3.8.

Project Updates

Community Writings and Resources

Ready to learn more?

This Month in RabbitMQ, December 2019 Recap

January 9th, 2020 by Michael Klishin

This Month in RabbitMQ — December Recap!

Happy new year! 3.8.x has been available for over three months now and we’re seeing a lot of great uptake. This is good news, since the upgrade process is even easier with the addition of feature flags. Keep up the upgrading!

Over at the CloudAMQP blog, you’ll now find videos transcripts of all the RabbitMQ Summit talks. Those are useful if you didn’t make it to the event and want to know what’s in the talk before watching the full 30 minute replay.

Take a look at Observe and Understand RabbitMQ, for example.

We also published a new case study about LAIKA, the animation company that brought you Coraline, The BoxTrolls, and Missing Link. If you are interested in having your use case for RabbitMQ profiled on, drop a note in the mailing list or email

Project updates

Community Writings and Resources


Ready to learn more? Check out these upcoming opportunities to learn more about RabbitMQ

LAIKA Gets Creative with RabbitMQ As the Animation Company’s IT Nervous System

December 16th, 2019 by Dormain Drewitz

Based in Portland, Oregon, LAIKA is a premier stop-motion animation company. With award-winning films like Coraline, ParaNorman, The BoxTrolls, Kubo and the Two Strings, and most recently, Missing Link, LAIKA is recognized for its unique aesthetic. Producing films the way LAIKA does is at the intersection of high-tech and analog.

LAIKA's small IT team is passionate about the animation business. "We support the production, making the movie." explained Mahlon Smith, Senior Technologist at LAIKA. The team is behind the scenes, amongst set carpenters, painters, and film directors. "We enable the production as efficiently as possible. Every dollar saved is a dollar we can apply towards the screen."

This sense of fiscal responsibility steers the team towards reusable technologies. Particularly when it comes to integration. With that frugality in mind, the team began looking at RabbitMQ as far back as 2009. What they've learned from using RabbitMQ over the last six years is how to solve more with a flexible messaging backbone.

Challenge: "Everything that happens is an event"

Operating IT for an animation company comes with some unique challenges. Cycling through film design, set production, and filming has artists coming and going. "Our industry historically has been a  nomadic population," explains Smith. For a company of its size, the volume of identity management activities was very high.

Broadly speaking, LAIKA's IT team faces challenges that are ubiquitous today. "We have a variety of in-house and third party systems," said Smith. The number of environments that need to be integrated are ever growing. New software and systems are being introduced, while existing systems are rarely retired.

Finally, there's an ever-present need to troubleshoot. Between network events, desktop support, to the render farms themselves, getting alerts and insights into activities is critical. As Will Fife, Senior Systems Administrator at LAIKA notes, "Increasingly, everything that happens has an event or does something because of an event."

RabbitMQ: "It's the nervous system of the company"

Faced with a dynamic user population, the IT team developed  a toolset to provision accounts across discrete systems. They adopted RabbitMQ, the most popular open source message broker to integrate between systems. For example, a new user needs a phone extension provisioned, but the standard LDAP identity doesn't have direct access to the phone system. Using RabbitMQ, a new user account creation event lands in a queue. The phone system listens to that queue and provisions an extension. 

"Our desktop support admins can create a new user account and we have some consistency and reliability in knowing that account is now pushed out to all the places it needs to be," explained Smith. The team is starting to use the web socket layer for RabbitMQ to send live updates to a browser. This empowers the desktop support team to see what's going on in real-time to troubleshoot user issues.

As LAIKA adds new software and systems, that event-driven approach to adding new users simplifies tedious processes. "Over time, we've added more and more listeners to the new user event that do additional tasks and additional things. It makes that more resilient," says Fife.

RabbitMQ's ability to set policies stood out against other messaging tools like NATS or NSQ. For example, the team can use policies to make sure that private information stays on a very secure V-host with limited access.

RabbitMQ has become something of an IT Swiss Army knife for LAIKA. "We control most of our VMs on the network over AMQP," explains Fife. "This includes starting them, shutting them down, destroying them, creating them, creating storage for them." If a VM doesn't reboot in an expected amount of time, an app reading the RabbitMQ queue notifies the owner by chat.

While LAIKA does around 90% of it's internal coding in Ruby, the IT team appreciates that RabbitMQ itself is language agnostic. "The STOMP layer that RabbitMQ provides makes it so you can trivially participate in network events with just a raw socket," says Smith.

Because it's easy to extend and integrate with, RabbitMQ has become the go-to integration tool. "If we require any sort of communication between systems, that’s what we’re going to use," says Smith. "It’s the nervous system of our information technology environment."

"We know we have a path to integrate"

Using RabbitMQ as the messaging backbone has reduced a lot of effort for the IT team. "From an IT perspective, once we had it deployed and our framework in place, now when we spin something up it’s almost zero effort," says Smith.

From new users to VM operations, IT has automated tasks and reduced the risk of error. A recent building move, for example, was simplified by adding listeners to an event queue to provision network ports.

The eventing model of RabbitMQ means that the team doesn't have to hardcode integrations. "We can loosely couple things. We don't need concrete contracts between systems," says Smith.

The flexibility and support for policies keeps the LAIKA team coming back to RabbitMQ for more use cases. The more it integrates, the more useful it becomes to solving the next challenge.

"It's a component that now has so much stuff flowing through it, that's the first place we go when solving a problem because we know the information is on the wire there, or can be with minimal effort." says Smith. "We know that we have a path to integrate with that event stream when a new problem presents itself."


Hear from more RabbitMQ users

This Month in RabbitMQ, November 2019 Recap

December 7th, 2019 by Michael Klishin

Last month was a big one for the RabbitMQ community because RabbitMQ Summit happened in London! If you missed the event, or if you were at the event, but missed a session in the other track, all the recordings are now available. Also, be sure to check out our overview blog for an easy-to-digest summary of what’s new in RabbitMQ 3.8.

More new 3.8 features and lessons learned will be covered in an upcoming webinar, by RabbitMQ core team member Gerhard Lazu. Tune in on December 12th!

Project Updates

Community Writings and Resources

Ready to learn more?

Check out these upcoming opportunities to learn more about RabbitMQ

This Month in RabbitMQ: November 2019

November 13th, 2019 by Michael Klishin

This Month (and the month before) in RabbitMQ — October and September recap!

We’re a little behind this month! At the beginning of October, we shipped RabbitMQ 3.8. That’s right, folks, RabbitMQ 3.8 is finally out!

Headline features include:

You’ll find some early reviews from folks in the community who have been kicking the tires in the community updates section below. Make sure you are all over the upgrades best practices to avoid potential hazards of upgrading to RabbitMQ 3.8.

Oh, and there were some other rather meaningful ecosystem announcements out there:

SpringOne Platform 2019 talks that highlighted RabbitMQ:

Project updates

Several updates to 3.7.x with bug fixes:

Community Writings and Resources

Webinars and Training

Ready to learn more? Check out these upcoming opportunities to learn more about RabbitMQ

RabbitMQ 3.8 Release Overview

November 11th, 2019 by admin

RabbitMQ 3.8 has just been released and has some major new features which focus on reliability, operations, and observability.

You can find the new 3.8 release on the GitHub releases page which includes information about what is included in the release as well as various installation assets. See our upgrade guide for more information about upgrading to 3.8.0.

Our team dedicates this release to Joe Armstrong, the creator of Erlang. Joe’s work in the fields of concurrent and distributed systems benefits RabbitMQ to this day. Equally importantly, Joe was a rare example of a brilliant engineer who was also very humble and kind.

Let’s take a quick look at the new features in this release.

Quorum Queues

For years, RabbitMQ has offered mirrored queues, also known as HA queues, as a solution for both high availability and data safety. Messages are replicated from a queue master to one or more mirrors so that in the event of the loss of a broker, a mirror can be promoted to master and the queue continues to be available without loss of confirmed messages.

Quorum queues are the next generation of replicated queue and offer both better performance and solve some of the pain points of mirrored queues. Quorum queues use the well established Raft protocol which has now been implemented in countless data systems as a means of achieving reliable and fault tolerant state replication.

Shows a quorum queue consisting of one leader and two followers

One of the main pain points around mirrored queues was blocking synchronization coupled with throwing away data on leaving and rejoining a cluster. This made applying OS patches difficult if queues were large in size as the administrator was forced to choose between lower redundancy or a period of unavailability. Quorum queues completely avoid this issue by not throwing away data and making replication to a single node non blocking. Quorum queues also avoid split-brain scenarios that could provoke message loss and always favour consistency over availability.

From now on we will be referring to classic and quorum queues.

Read more about quorum queues in documentation guides.

Feature Flags

Prior to the new feature flag sub-system, upgrades to RabbitMQ required cluster-wide shutdown. Feature flags allow for rolling upgrades of a cluster enabling continued availability.

As Jean-Sébastien Pédron described in  this blog: “New in RabbitMQ 3.8.0 is the feature flags subsystem: when a single node in a 3.7.x cluster is upgraded to 3.8.0 and restarted, it will not immediately enable the new features or migrate its database schema because the feature flags subsystem told it not to. It could determine this because RabbitMQ 3.7.x supports no feature flags at all, therefore new features or behaviours in RabbitMQ 3.8.0 cannot be used before all nodes in the cluster are upgraded.”

Multi-step process of upgrading and enabling feature flags

Read more about feature flags in documentation guides.

Prometheus and Grafana Monitoring Support

Many systems come with their own custom monitoring visualization solution, the Management Plugin has has been this solution in RabbitMQ for years. The new paradigm is for applications and infrastructure to expose metrics to external observability platforms and delegate the storing, indexing and alerting to those specialized tools. Both Prometheus and Grafana have become an industry standard in the systems observability space and provide powerful visualization and exploratory data analysis capabilities.

RabbitMQ 3.8 comes with new support for exposing its metrics via a Prometheus endpoint. Additionally, many more metrics are now available, vastly improving the overall observability of RabbitMQ. Visualizing these metrics is now as simple as importing pre-built dashboards into Grafana.

The RabitMQ overview Grafana dashboard

Prometheus and Grafana support has a dedicated documentation guide.

OAuth 2.0 Support

RabbitMQ 3.8 allows clients to use JWT access tokens for authentication and authorization. Clients obtain an access token from an OAuth2.0 provider, through any grant type they wish, and use that token to gain access to RabbitMQ. OAuth 2.0 tokens use scopes to communicate what set of permissions a particular client has been granted and RabbitMQ permissions are mapped onto these scopes.

Read more about OAuth2.0 support in the docs.

Additional CLI Tools

You can perform various levels of health checks with the rabbitmq-diagostics CLI tool. The checks range from basic pings to checking queues and vhosts are running to in-depth runtime information.

We have a new CLI tool, rabbitmq-queues, which gives us the ability to modify quorum queue memberships but also gives us new master/leader rebalancing functionality for both quorum and mirrored queues.

One of the pain points of performing a rolling upgrade to the servers of a RabbitMQ cluster was that queue masters would end up concentrated on one or two servers. The new rebalance command will automatically rebalance masters across the cluster. 

rabbitmq-queues has a man page.

Single Active Consumer (SAC)

SAC is also the next generation of an existing feature - exclusive consumers. The objective of exclusive consumers is to ensure that only a single consumer can consume a given queue at a time. The consumer uses the “exclusive” flag when registering itself, and the registration only succeeds if no other consumer is already registered.

SAC improves on this by making exclusivity a feature of the queue itself and making the process transparent to clients. If a second consumer registers itself, the registration succeeds and the consumer sits idle ready to become active if the currently active consumer shuts down or crashes. This gives us an automatic active-backup consumer strategy for when we want only a single consumer, but a secondary to take over quickly in the event the active goes away.

Shows two consumers on a queue where only one is active

Read more about Single Active Consumer in the Consumers guide.


  • Messages can now be deadlettered from the tail of a classic queue with the new queue overflow configuration reject-publish-dlx.
  • High queue creation/deletion rates (queue churn) are now less costly.
  • Maximum message size is now configurable.
  • Quorum queues come with a new poison message feature that allows you to configure messages to be dropped after a given number of redeliveries by setting the delivery-limit policy.
  • RabbitMQ for Kubernetes is coming. Sign up to the beta.

If you’re more of a classroom learner, I recommend watching the webinar, “What's new in RabbitMQ 3.8?

Please give 3.8 a try and let us know what you think on the RabbitMQ mailing list!

This Month in RabbitMQ — September 2019

September 9th, 2019 by Michael Klishin

Welcome back for another edition of This Month in RabbitMQ! Exciting news is that the first release candidate for RabbitMQ 3.8 is now available!

Be sure to catch up on what is new in 3.8 by reading the release notes and watching this webinar replay.

We are starting to countdown until RabbitMQ Summit in London on November 4. The RabbitMQ team is looking forward to sharing updates on the project, but we’re also looking forward to hearing from end-users like Bloomberg, WeWork, Softonic, and Zalando. Be sure to register and snag a spot in one of the training add-on courses.

Project updates

Community writings and resources

Events and Training

Ready to learn more? Check out these upcoming opportunities to learn more about RabbitMQ

This Month in RabbitMQ — August 2019

August 12th, 2019 by Michael Klishin

Welcome back for another edition of This Month in RabbitMQ! Some big news last month was Pivotal announced a forthcoming alpha of Pivotal RabbitMQ for Kubernetes.

You can inquire about the alpha here. As part of that announcement, RabbitMQ was mentioned in coverage in Business Insider, Container Journal, SiliconANGLE, Storage Review, The New Stack, and ZDNet. Pretty cool!

Before we move on to the update from the core team and our wonderful community, a reminder that prices for RabbitMQ Summit go up on August 22, so get your tickets now!

You can add on RabbitMQ training to your ticket—basic and advanced courses are available. Great talks planned from Bloomberg, WeWork, Softonic, the Erlang Solutions and CloudAMQP teams, as well as the core RabbitMQ engineers, of course.

Project updates

Community writings and resources

We also came across this article in the International Journal of Research Studies in Computer Science and Engineering (IJRSCSE) on Distributing Messages Using Rabbitmq with Advanced Message Exchanges

Events and Training Courses

Ready to learn more? Check out these upcoming opportunities to learn more about RabbitMQ

This Month in RabbitMQ — July 2019

July 9th, 2019 by Michael Klishin

Welcome back for another edition of This Month in RabbitMQ! In June, we saw the RabbitMQ Summit agenda start to go live, featuring some great returning speakers as well as new faces. There are also a couple of training sessions offered to add onto your ticket. It’s a great way to immerse yourself in all things RabbitMQ for a couple of days. Registration is open, so book your tickets now before the prices go up in August!

Project updates

  • RabbitMQ 3.7.16 has been released with bug fixes, usability improvements and new rabbitmq-diagnostics commands
  • PerfTest 2.8.1 was released with a couple of bug fixes
  • Reactor RabbitMQ 1.3.0.M1 was released as part of the Reactor Dysprosium-M2 release train. More goodies to come in the next few weeks!
  • March Hare 4.0 was released, now based on the 5.7.x series of the RabbitMQ Java client

Community writings and resources

June 5: Vermaden (@vermaden) wrote about setting up RabbitMQ cluster on FreeBSD Jails

June 5: Josh Smeaton (@jarshwah) of Kogan published about monitoring Celery queue length with RabbitMQ

June 7: Emre Tiryaki (@emrtryki) from Hepsiburada published about event ordering with RabbitMQ using the consistent hash exchange (in Turkish)

June 8: Cleison Ferreira Melo (Cleison Ferreira Melo) wrote another installment of his series on building a microservices application, focused on the RabbitMQ container and connection

June 8: Jose Alonso Romero Matias published a four-part video series (in Spanish) showing how to create a messaging project that emulates the sending of invoices through a service, using RabbitMQ: part 1, part 2 on dependency injection with RabbitMQ, part 3 on creating and testing the invoice handler, part 4

June 9: Gilles Robert (@ask4gilles) released v2.0.3 of @opentracing Spring RabbitMQ with a bunch of new instrumented methods on AmqpTemplate and documentation improvements

June 11: Marco Behler (@MarcoBehler) published a video on How to Consume RabbitMQ Messages From Queues With Java

June 13: Maksim Martianov wrote about Kubernetes worker autoscaling based on RabbitMQ queue depth

June 14: Bartha Bela Tibor published about RabbitMQ in Docker with Alpine Linux

June 17: Rafael Capuano published (in Portuguese) a three-part series on the external configuration store pattern, using RabbitMQ for  configuration change propagation: part 1 on contextualizing, part 2 on creating the API, and part 3 on creating the client

June 18: Ram N. published a video and resource links on how to send and receive product objects to or from a queue

June 19: IBM published a tutorial on invoking serverless functions through a message broker

June 23: Karol Galanciak (@Azdaroth) published the third part in a series on Messages on Rails, this one focused on RabbitMQ

June 25: Dhananjay Singh wrote about Spring Cloud Stream with RabbitMQ: Message-Driven Microservices

June 27: Ranga Karanam () published on DZone about Asynchronous Communication With Queues and Microservices: A Perfect Combination?

June 28: Davide Guida (@DavideGuida82) published the first in a series on using message queues in .NET Core (in Italian)

June 29: Teerapong Singthong (@iamgoangle) wrote about Go Messaging System with RabbitMQ and RabbitMQ client for Go (in Thai)

June 30: Md. Al-Amin published about Solving RabbitMQ High CPU/Memory Usages Problem With Celery

Ready to learn more?

Check out these upcoming opportunities to learn more about RabbitMQ: