Bobcares

How to Set Up RabbitMQ Cluster-Docker Compose

PDF Header PDF Footer

Set up a RabbitMQ cluster-Docker Compose with this quick guide. Our Docker support team is always here to help you.

How to Set Up RabbitMQ Cluster-Docker Compose

If you’re searching for a quick and practical guide to set up a RabbitMQ cluster docker-compose environment, you’re in the right place. This post provides a RabbitMQ cluster docker-composecompact and actionable breakdown of how RabbitMQ works, its components, and why it’s used, along with a simple guide to set up a clustered environment using Docker Compose. No fluff. Just the essentials.

What Is RabbitMQ?

RabbitMQ is the most widely used open-source message broker developed by Pivotal Tracker. Built using Erlang, RabbitMQ fits perfectly into any microservices architecture thanks to its support for multiple protocols, including:

  • AMQP
  • HTTP
  • STOMP
  • MQTT

How RabbitMQ Works

RabbitMQ uses an Exchange system to route messages to the appropriate Queue. There are four exchange types:

  • Direct Exchange: Sends the message directly to a queue using a routing key.
  • Fanout Exchange: Broadcasts to all queues bound with the same routing key.
  • Topic Exchange: Routes messages to queues based on routing patterns.
  • Headers Exchange: Uses headers (similar to HTTP headers) to determine routing.

RabbitMQ Components

Here are the four core components of RabbitMQ:

  • Producer: Sends messages to a queue.
  • Exchange: Handles routing messages to the appropriate queue.
  • Queue: Stores messages bound to exchanges via binding keys.
  • Consumer: Reads messages from a queue.

Why Use RabbitMQ?

In monolithic architecture, a single point of failure and scalability bottlenecks are common. RabbitMQ, used in microservices environments, helps eliminate these issues:

  • Promotes decoupling of application components
  • Enables language-agnostic communication
  • Enhances Single Responsibility Principle
  • Allows scalable and flexible development

This makes RabbitMQ an excellent fit for evolving systems.

Setting Up RabbitMQ Cluster

Here’s how you can spin up a RabbitMQ cluster docker-compose environment:

version: "3.8"
services:
rabbit1:
image: rabbitmq:3.12-management
hostname: rabbit1
container_name: rabbit1
environment:
- RABBITMQ_ERLANG_COOKIE=secretcookie
- RABBITMQ_NODENAME=rabbit@rabbit1
ports:
- "15672:15672"
- "5672:5672"
networks:
- rabbitmq_cluster
rabbit2:
image: rabbitmq:3.12-management
hostname: rabbit2
container_name: rabbit2
environment:
- RABBITMQ_ERLANG_COOKIE=secretcookie
- RABBITMQ_NODENAME=rabbit@rabbit2
networks:
- rabbitmq_cluster
depends_on:
- rabbit1
rabbit3:
image: rabbitmq:3.12-management
hostname: rabbit3
container_name: rabbit3
environment:
- RABBITMQ_ERLANG_COOKIE=secretcookie
- RABBITMQ_NODENAME=rabbit@rabbit3
networks:
- rabbitmq_cluster
depends_on:
- rabbit1
networks:
rabbitmq_cluster:
driver: bridge

Once the containers are up, you can manually join the cluster using the following commands (run inside each container):

docker exec -it rabbit2 bash
rabbitmqctl stop_app
rabbitmqctl join_cluster rabbit@rabbit1
rabbitmqctl start_app
Repeat the same steps for rabbit3.

[If needed, Our team is available 24/7 for additional assistance.]

Conclusion

A RabbitMQ setup is simple yet powerful for scaling microservices. It ensures high availability, load balancing, and flexibility across different environments. With minimal setup, you get a reliable message broker ready for production.

0 Comments

Submit a Comment

Your email address will not be published. Required fields are marked *

Get featured on the Bobcares blog and share your expertise with a global tech audience.

WRITE FOR US
Docker Support

Spend time on your business, not on your servers.

Managing a server is time consuming. Whether you are an expert or a newbie, that is time you could use to focus on your product or service. Leave your server management to us, and use that time to focus on the growth and success of your business.

TALK TO US Or click here to learn more.

Speed issues driving customers away?
We’ve got your back!