CloudAMQP and RabbitMQ Use cases

RabbitMQ is a message broker built for both publish-subscribe messaging and data streaming. It is commonly used as a middleman between microservices and fits a wide range of use cases: task-based workflows like order handling, long-running background jobs, image processing, real-time notifications, IoT device communication, and data pipelines.

Anywhere one part of a system needs to trigger or communicate with another, RabbitMQ is a natural fit. It is used across industries, from fintech and e-commerce to healthcare, education, and logistics.

RabbitMQ use case example

A web service that receives many requests per second needs to stay highly available without being blocked by heavy processing. Placing a queue between the web service and the processing service decouples the two. The processing system works through requests at its own pace, and the queue persists them if volume spikes.

As workload grows, scaling is straightforward: add more workers to process the queue faster. Message queues also support more advanced scenarios, like routing messages to different queues based on how they should be handled.

CloudAMQP Customer stories

Logistics and order fulfillment at Picnic

Picnic, an online-only supermarket operating in the Netherlands, Germany, and France, relies on RabbitMQ to coordinate logistics across its entire operation. Every placed order triggers messages that flow through supply chain systems, warehouse fulfillment, and route optimization for electric delivery vehicles, handling millions of messages daily.

“RabbitMQ became the bloodstream of our infrastructure. If it goes down, Picnic essentially comes to a halt,” says Franklin Amorim, tech lead of the Infra team.

As the company scaled, Picnic invested in observability tools for real-time monitoring and is currently migrating from classic queues to quorum queues to improve resilience, all with zero downtime.

Long-running tasks at Softonic

Read about how RabbitMQ can be used in an event-based microservices architecture, to support 100 million users a month as it does for Softonic.

The software and app discovery portal Softonic reaches over 100 million users per month, delivers more than 2 million downloads per day, and has a constant flow of events and commands between its services. RabbitMQ is used as a message queue between microservices, contributing to a reliable, fast, and effective architecture perfect for Softonic’s purpose.

Users upload files to Softonic, and all uploaded files are scanned for viruses while information about the file is collected before being distributed to other users. The new binary data is first persisted within a dedicated service, and a notification about the upload is sent to the message queue. Other services collect this information which, in the end, will be added to the website. In this case, the user gets notified immediately after the upload has succeeded, and a scanning event is simply placed on the message queue for other services to handle. The message queue allows web servers to respond to requests quickly instead of performing a resource-heavy process on the spot and keeping the user waiting.

IoT communication at Viessmann

Viessmann, a leading provider of heating and climate control systems, uses RabbitMQ to handle real-time communication between IoT devices and their backend. Over 550,000 devices are connected to approximately 900,000 users worldwide.

RabbitMQ powers real-time communication between heating systems and the backend, enabling features like live updates and error notifications. Messages from heating systems are sent directly through IoT communication to the backend using RabbitMQ, which then handles the conversion to web sockets so the front-end application can receive real-time updates.

The IoT backend also runs asynchronous status calculations via RabbitMQ, determining whether a heating system is healthy, has a warning, or requires attention. Notifications are pushed directly to the customer’s display when an error occurs.

Long-running tasks - image scaling at Hemnet

The property listing platform Hemnet moved from a full-on premise solution to a cloud-based solution in less than a year. Read their story about how they changed from in-house to the cloud, and how RabbitMQ became an important player during the migration.

Hemnet uses RabbitMQ, among other things, as a pipeline for image scaling. Once a real estate broker adds a new property image, it sends an image scaling task to RabbitMQ.

The task stays in the message queue until Hemnet’s image scaling service grabs it from the queue, scales the selected image, making it ready to be shown on the website or in the app with the new size.

Sports activity tracking at adidas

The adidas Running and adidas Training apps, developed by Runtastic, are built on a microservices architecture where RabbitMQ handles communication between services. Messages are generated every time a user starts an activity, and services listen to each other depending on the information they need. For example, when a sports activity ends, the leaderboard service picks up the message and automatically updates with the correct data. Push notifications to large numbers of users are also handled through RabbitMQ.

During the COVID pandemic, when gyms closed and outdoor activity surged, the apps saw a massive spike in users. “We have been running RabbitMQ in basically all of our services from the beginning. That helped a lot when we needed it the most. RabbitMQ made it easy for us to scale up and handle the heap of workload coming in all at once,” said Alexander Lackner, infrastructure engineer at Runtastic.

Breaking down a monolithic system into microservices at Parkster

Parkster, a digital parking service, is breaking down its system into multiple microservices by using RabbitMQ.

Like many other companies, including Netflix, Parkster started with a monolithic architecture. They wanted to prove the business model before they developed further. In monolithic applications, the whole application is built as a single unit. All code for a system is in a single codebase compiled together and produced as a single system.

Having one codebase seemed like the easiest and fastest solution at the time. It solved their core business problems, including connecting devices with people, parking zones, billing, and payments. A few years later, Parkster decided to break up the monolith into multiple small codebases, which they did through numerous microservices communicating via message queues.

The machine-to-machine chat application at FarmBot

FarmBot is an open-source robotic hardware kit designed for gardeners, researchers, and educators to interact with agricultural projects in a more efficient way. RabbitMQ communicates to the devices in the field by AMQP and acts as a message queue to the backend services. MQTT protocol is used for real-time events to the frontend user interface.

RabbitMQ is now an essential component of the FarmBot web API, where it handles various tasks, including:

  • Passing push notifications between users and devices.

  • Passing background messages between server background workers.

  • Uses a set of custom authorization plugins (to prevent unauthorized use).

Because RabbitMQ is a real-time message broker, there is no need to check for new messages. When users click the “move” button on the user interface, they send back and forth between client, device, and server without initiating requests.

In many ways, the message broker acts as a machine-to-machine chat application. Any software package, whether it be the REST API, FarmBot OS, or third-party firmware, can send a message to any other entity currently connected to the message broker, given it has the correct authorization.

Read the whole user story here.

Why should we use message queues and CloudAMQP?

When using a message broker, the different parts of your application work independently, detached from each other. This means that one process won’t need to consult another or even post notifications to it.

This way of addressing messages creates a system that is easy to maintain and easy to scale.

RabbitMQ Features and Benefits

Application decoupling. Instead of building a massive application, decouple different concerns and communicate between them asynchronously. Other parts can then evolve independently, be written in various languages, and be maintained by separate teams.

Reliability. Messages can be stored and forwarded, and delivered multiple times until successfully processed. No message gets lost even if a consumer is temporarily unavailable.

Offload your data store. Instead of polling your data store for changes, publish a message when new data is inserted. Interested services are notified immediately, freeing the data store to handle qualified queries.

Scalability. As workload increases, simply add more workers to process the queue faster. No changes to the rest of the system are needed.

Resilience. If a process handling messages fails, other messages stay safely in the queue and are processed once the system has recovered. A failure in one service does not bring down the rest.

Asynchronous communication. Messages can be placed on a queue without being dealt with immediately, allowing services to process work at their own pace without blocking the sender.

Real-time applications. RabbitMQ is well suited for real-time applications, handling notifications and message streaming effectively with the ability to push thousands of messages per second.