What is RabbitMQ and How to Install It on Ubuntu?

RabbitMQ, a robust and flexible open-source message broker, plays a crucial role in enabling efficient communication between distributed systems. It provides a reliable messaging framework, making it easier to build scalable and loosely coupled applications. In this blog post, we will delve into the world of RabbitMQ, exploring its features and benefits, and guide you through the installation process on Ubuntu.

1. Understanding RabbitMQ:

RabbitMQ is a message broker that implements the Advanced Message Queuing Protocol (AMQP). It acts as an intermediary, receiving messages from producers and delivering them to consumers, ensuring seamless communication between various components of distributed systems. RabbitMQ supports multiple messaging patterns, including point-to-point, publish/subscribe, and request/reply, making it highly versatile.

2. Key Features of RabbitMQ:

RabbitMQ offers several essential features that make it a popular choice for message queuing. Some notable features include:

  1. Message Durability: RabbitMQ can persist messages to disk, ensuring they are not lost even in the event of system failures.
  2. Message Routing: Messages can be routed based on various criteria, such as topic, header, and pattern matching, allowing for flexible message handling.
  3. Clustering: RabbitMQ supports clustering, enabling high availability and scalability. Multiple RabbitMQ nodes can be grouped together, forming a logical unit for increased performance and fault tolerance.
  4. Lightweight and High Performance: RabbitMQ is written in Erlang, known for its concurrency and fault-tolerant capabilities, making RabbitMQ highly performant and resource-efficient.
  5. Management UI: RabbitMQ provides a web-based management console, allowing users to monitor queues, exchanges, and connections, making it easier to manage and troubleshoot the message broker.

3. RabbitMQ Installation on Ubuntu:

Now, let’s dive into the installation process of RabbitMQ on Ubuntu.

3.1. Preparing the Environment:

Before installing RabbitMQ, ensure that your Ubuntu system is up to date. Open the terminal and run the following commands:

sudo apt update
sudo apt upgrade

3.2. Installing Erlang:

RabbitMQ is built on the Erlang programming language. To install Erlang, execute the following command:

sudo apt install erlang

3.3. Adding the RabbitMQ Repository:

To obtain the latest version of RabbitMQ, add the RabbitMQ repository to your system. Run the following commands:

wget -O- https://dl.bintray.com/rabbitmq/Keys/rabbitmq-release-signing-key.asc | sudo apt-key add -
echo "deb https://dl.bintray.com/rabbitmq/debian $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/rabbitmq.list

3.4. Installing RabbitMQ:

After adding the repository, update the package list and install RabbitMQ:

sudo apt update
sudo apt install rabbitmq-server

3.5. Starting and Enabling RabbitMQ:

To start the RabbitMQ service and enable it to start on boot, run the following commands:

sudo systemctl start rabbitmq-server
sudo systemctl enable rabbitmq-server

4. Configuring RabbitMQ:

By default, RabbitMQ listens on localhost ( and accepts connections on port 5672. To configure RabbitMQ further, including network bindings, authentication, and SSL/TLS. Let’s see how to configure it:

4.1. Enabling the Management Plugin

RabbitMQ provides a web-based management interface that allows you to monitor and manage your message queues effectively. To enable this plugin, follow these steps:

1. Open a terminal window.

2. Enable the RabbitMQ management plugin by executing the command:

sudo rabbitmq-plugins enable rabbitmq_management

3. Restart the RabbitMQ service to apply the changes:

sudo service rabbitmq-server restart

4.2. Accessing the RabbitMQ Management Console

Now that the management plugin is enabled, you can access the RabbitMQ management console through a web browser. Follow these steps:

  1. Open your preferred web browser.
  2. In the address bar, enter the following URL: http://localhost:15672/
  3. You should now see the RabbitMQ login page. Enter the default credentials
    • Username: guest
    • Password: guest

Note: It’s recommended to change the default credentials for security reasons.

RabbitMQ has a Management Console plugin that allows you to perform various management and monitoring tasks via a web-based interface. You can manage exchanges, queues, bindings, users, and other RabbitMQ objects, as well as monitor things like memory usage, message rates, connections, and other processes. To check the list of all available RabbitMQ plugins, run the following command:

sudo rabbitmq-plugins list


4.3. Setting Up RabbitMQ Administrative User

To add an admin user to RabbitMQ, follow these steps:

1. Open a terminal window and execute the following command to add a new user:

sudo rabbitmqctl add_user <username> <password>

Replace <username> and <password> with your desired values. For example, to add an admin user with the username “admin” and password “secretpassword,” run:

sudo rabbitmqctl add_user admin secretpassword

2. Grant administrative privileges to the newly created user by executing the following command:

sudo rabbitmqctl set_user_tags <username> administrator

3. Finally, update the permissions for the new admin user using the following command:

sudo rabbitmqctl set_permissions -p / <username> ".*" ".*" ".*"

Note: You can also delete an existing user like this:

sudo rabbitmqctl delete_user <username>

5. Conclusion:

Congratulations! You have successfully installed RabbitMQ on your Ubuntu system. RabbitMQ offers a robust and feature-rich messaging system, allowing seamless communication between components of distributed systems. By leveraging its key features, such as message durability, routing, clustering, and management UI, you can build scalable and reliable applications.

Remember to explore RabbitMQ’s extensive documentation to unlock its full potential and discover advanced configuration options. Enjoy using RabbitMQ to supercharge your message-based communication!

Happy coding! ✌️