Learn step-by-step instructions to install RabbitMQ on Rocky Linux 9 with our comprehensive guide. Set up RabbitMQ effortlessly and optimize your messaging infrastructure today! #centlinux #linux #rabbitmq
Table of Contents
What is RabbitMQ?
RabbitMQ is an open-source message broker software that enables applications to communicate and transfer data between each other. It implements the Advanced Message Queuing Protocol (AMQP), which is a widely adopted standard for reliable messaging between different software systems.
At its core, RabbitMQ acts as a mediator or intermediary between two or more applications. It receives messages from a sender, known as a producer, and delivers those messages to a receiver, known as a consumer. The messages are typically organized into queues within RabbitMQ, which provides a way to store and route them.
RabbitMQ supports various messaging patterns, including point-to-point, publish/subscribe, and request/reply. It provides features like message durability, acknowledgments, and routing flexibility, making it a robust and reliable messaging system.
Developers can use RabbitMQ to build distributed and scalable applications that need to handle high volumes of messages and ensure reliable delivery. It is widely used in various industries and scenarios, such as enterprise systems, microservices architectures, event-driven systems, and cloud computing environments.
RabbitMQ is written in Erlang and is known for its stability, performance, and fault-tolerant design. It offers client libraries for multiple programming languages, making it accessible for developers using different technology stacks.
Read Also: How to install RabbitMQ Server on CentOS 8
What is RabbitMQ used for?
RabbitMQ is a powerful message broker software that facilitates communication between different applications or services within a distributed system. It acts as a middleman, receiving messages from one application and routing them to another.
Here are some common use cases for RabbitMQ:
- Decoupling: RabbitMQ enables decoupling of various components in a system, allowing them to operate independently. This promotes scalability and flexibility in the architecture.
- Asynchronous Messaging: It’s often used for asynchronous communication, where a sender doesn’t need an immediate response from the receiver. This is particularly useful in scenarios where processing time varies or when the sender and receiver are not always available simultaneously.
- Load Balancing: RabbitMQ can distribute tasks or messages across multiple workers or consumers, balancing the workload efficiently.
- Event-Driven Architecture: It’s frequently employed in event-driven architectures, where components react to events triggered by other components. RabbitMQ facilitates the broadcasting of events to interested parties.
- Workflow Management: RabbitMQ can be integrated into workflow management systems, ensuring reliable message delivery and processing in complex business processes.
- Integration: It’s widely used for integrating disparate systems and applications, allowing them to communicate seamlessly regardless of the underlying technology stack.
Overall, RabbitMQ serves as a reliable, scalable, and flexible messaging solution for various distributed systems and architectures.
RabbitMQ vs Kafka
Here’s a comparison between RabbitMQ and Kafka presented in a table format:
Feature | RabbitMQ | Kafka |
---|---|---|
Messaging Model | Follows traditional message queue model | Designed as a distributed streaming platform |
Use Cases | Traditional messaging scenarios, task distribution, job queues, integrating systems | Real-time event processing, log aggregation, stream processing, event sourcing, data pipeline architectures |
Scalability | Vertical scaling by adding resources to a single node, supports clustering for horizontal scalability | Designed for horizontal scalability by adding more broker nodes |
Durability | Provides message durability by persisting messages to disk | Highly durable by persisting messages to disk and replicating across broker nodes |
Message Retention | Retains messages until consumed or expire based on configurable policies | Retains messages for a configurable retention period, allowing replay within that window |
This table provides a concise comparison of key features between RabbitMQ and Kafka, making it easier to understand their differences at a glance.
Environment Specification
We are using a minimal Rocky Linux 9 virtual machine with following specifications.
- CPU – 3.4 Ghz (2 cores)
- Memory – 4 GB
- Storage – 40 GB
- Operating System – Rocky Linux release 9.2 (Blue Onyx)
- Hostname – rabbitmq-01.centlinux.com
- IP Address – 192.168.18.87/24
Prepare your Rocky Linux Server
Login to your Linux server as root user by using a ssh client.
Set a Fully Qualified Domain Name (FQDN) of your Linux machine and set up Local DNS Resolution by executing following commands.
# hostnamectl set-hostname rabbitmq-01.centlinux.com
# echo "192.168.18.87 rabbitmq-01 rabbitmq-01.centlinux.com" >> /etc/hosts
Update software packages in your Linux OS by executing dnf command.
# dnf update -y
If above command installs a new version of Linux Kernel, then you should reboot your Linux OS with new Kernel before installing RabbitMQ software.
# reboot
After reboot, note down the Linux OS and Linux Kernel versions.
# cat /etc/rocky-release Rocky Linux release 9.2 (Blue Onyx) # uname -r 5.14.0-284.11.1.el9_2.x86_64
Install Additional Yum Repositories
To install RabbitMQ on Linux, you may need some software packages from Extra Packages for Enterprise Linux (EPEL) yum repository. Therefore, install EPEL yum repository as follows.
# dnf install -y epel-release
You can download RabbitMQ software from their offical website. Or you can install RabbitMQ official yum repository then install Message Broker software by using Linux Package Manager.
We suggest that you should install RabbitMQ on Linux from their official yum repository.
To install RabbitMQ official yum repository, execute following command at Linux terminal.
# curl -s https://packagecloud.io/install/repositories/rabbitmq/rabbitmq-server/script.rpm.sh | sudo bash
Similarly, you should also install RabbitMQ ErLang repository.
# curl -1sLf 'https://dl.cloudsmith.io/public/rabbitmq/rabbitmq-erlang/setup.rpm.sh' | sudo -E bash
Build yum cache for newly installed yum repositories.
# dnf makecache Extra Packages for Enterprise Linux 9 - x86_64 1.7 kB/s | 6.7 kB 00:03 rabbitmq-rabbitmq-erlang 376 B/s | 659 B 00:01 rabbitmq-rabbitmq-erlang-noarch 248 B/s | 659 B 00:02 rabbitmq-rabbitmq-erlang-source 308 B/s | 659 B 00:02 rabbitmq_rabbitmq-server 794 B/s | 1.8 kB 00:02 rabbitmq_rabbitmq-server-source 392 B/s | 951 B 00:02 Rocky Linux 9 - BaseOS 1.8 kB/s | 4.1 kB 00:02 Rocky Linux 9 - AppStream 2.6 kB/s | 4.5 kB 00:01 Rocky Linux 9 - Extras 1.9 kB/s | 2.9 kB 00:01 Metadata cache created.
Install RabbitMQ on Rocky Linux 9
All required yum repositories have been added. Now you can install RabbitMQ on Linux by using dnf command.
# dnf install -y rabbitmq-server
Enable and start RabbitMQ service.
# systemctl enable --now rabbitmq-server.service Created symlink /etc/systemd/system/multi-user.target.wants/rabbitmq-server.service → /usr/lib/systemd/system/rabbitmq-server.service.
Install RabbitMQ Plugins
To enable web based Management Console for your Message Broker Software, you need to install RabbitMQ plugins on your Linux Server.
# rabbitmq-plugins enable rabbitmq_management Enabling plugins on node rabbit@rabbitmq-01: rabbitmq_management The following plugins have been configured: rabbitmq_management rabbitmq_management_agent rabbitmq_web_dispatch Applying plugin configuration to rabbit@rabbitmq-01... The following plugins have been enabled: rabbitmq_management rabbitmq_management_agent rabbitmq_web_dispatch started 3 plugins.
Configure Linux Firewall:
Identify the service ports, that are being used by RabbitMQ software, execute following commands on Linux terminal.
# ss -tulpn | grep beam tcp LISTEN 0 1024 0.0.0.0:15672 0.0.0.0:* users:(("beam.smp",pid=2172,fd=37)) tcp LISTEN 0 128 0.0.0.0:25672 0.0.0.0:* users:(("beam.smp",pid=2172,fd=18)) tcp LISTEN 0 128 *:5672 *:* users:(("beam.smp",pid=2172,fd=35)) # ss -tulpn | grep epmd tcp LISTEN 0 4096 0.0.0.0:4369 0.0.0.0:* users:(("epmd",pid=2208,fd=3)) tcp LISTEN 0 4096 [::]:4369 [::]:* users:(("epmd",pid=2208,fd=4))
Allow above service ports in Linux firewall.
# firewall-cmd --permanent --add-port={4369,5672,15672,25672}/tcp success # firewall-cmd --reload success
Install rabbitmqadmin on Linux:
The management plugin ships with a command line tool rabbitmqadmin which can perform some of the same actions as the Web-based UI, and which may be more convenient for automation tasks.
rabbitmqadmin can be downloaded from any RabbitMQ node that has the management plugin enabled. Navigate to http://{hostname}:15672/cli/rabbitmqadmin to download it. The tool requires a supported version of Python to be installed.
You can use following curl command to download rabbitmqadmin.
# curl http://localhost:15672/cli/rabbitmqadmin -o /usr/local/bin/rabbitmqadmin % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 42533 100 42533 0 0 2307k 0 --:--:-- --:--:-- --:--:-- 2307k
Grant execute permissions to rabbitmqadmin command.
# chmod +x /usr/local/bin/rabbitmqadmin
Create a RabbitMQ Admin User:
RabbitMQ software shipped with a default user guest with password guest. This guest user has administrative privileges but it can only be login to message-broker server from localhost.
Therefore, you need to create another admin user to access RabbitMQ server web interface remotely.
First, check the already available users on Message Broker server.
# rabbitmqctl list_users Listing users ... user tags guest [administrator]
Execute following command at Linux terminal to create a new RabbitMQ user.
# rabbitmqctl add_user admin P@ssw0rd Adding user "admin" ... Done. Don't forget to grant the user permissions to some virtual hosts! See 'rabbitmqctl help set_permissions' to learn more.
Set [administrator] tag for admin user to make it a RabbitMQ Administrator.
# rabbitmqctl set_user_tags admin administrator Setting tags for user "admin" to [administrator] ...
Check the list of available users again.
# rabbitmqctl list_users Listing users ... user tags admin [administrator] guest [administrator]
Create a RabbitMQ Virtual Host:
RabbitMQ is multi-tenant system: connections, exchanges, queues, bindings, user permissions, policies and some other things belong to virtual hosts, logical groups of entities. If you are familiar with virtual hosts in Apache or server blocks in Nginx, the idea is similar. There is, however, one important difference: virtual hosts in Apache are defined in the configuration file; that’s not the case with RabbitMQ: virtual hosts are created and deleted using rabbitmqctl or HTTP API instead.
To create a RabbitMQ virtual host, you can use following Linux command.
# rabbitmqctl add_vhost /my_vhost Adding vhost "/my_vhost" ...
Check the available virtual host on your Message Broker server.
# rabbitmqctl list_vhosts Listing vhosts ... name /my_vhost /
Grant permissions on my_vhost to admin user.
# rabbitmqctl set_permissions -p /my_vhost admin ".*" ".*" ".*" Setting permissions for user "admin" in vhost "/my_vhost" ...
Check the permissions of admin user.
# rabbitmqctl list_user_permissions admin Listing permissions for user "admin" ... vhost configure write read /my_vhost .* .* .*
Check the permission on my_vhost.
# rabbitmqctl list_permissions -p /my_vhost Listing permissions for vhost "/my_vhost" ... user configure write read admin .* .* .*
Create a Message Queue:
You can create a message queue by using rabbitmqadmin command.
# rabbitmqadmin -V /my_vhost -u admin -p P@ssw0rd declare queue name=my_queue01 queue declared
Send a message to your message queue by using following command.
# rabbitmqadmin -V /my_vhost -u admin -p P@ssw0rd publish routing_key=my_queue01 payload='Hello World!' exchange=amq.default Message published
Receive the message in your message queue.
# rabbitmqadmin -V /my_vhost -u admin -p P@ssw0rd get queue=my_queue01 +-------------+----------+---------------+--------------+---------------+------------------+------------+-------------+ | routing_key | exchange | message_count | payload | payload_bytes | payload_encoding | properties | redelivered | +-------------+----------+---------------+--------------+---------------+------------------+------------+-------------+ | my_queue01 | | 0 | Hello World! | 12 | string | | False | +-------------+----------+---------------+--------------+---------------+------------------+------------+-------------+
Access RabbitMQ Server Web Interface:
Open URL http://rabbitmq-01.centlinux.com:15672 in a web browser.
Login as admin user.
After successful login, you may reach at the dashboard of RabbitMQ Management web interface. You can perform complete administration of your message-broker server from here.
Click on “Queues”.
Final Thoughts
When delving into the realm of RabbitMQ installation on Rocky Linux 9, meticulous guidance is key. By following our detailed instructions, you’ll seamlessly integrate RabbitMQ into your system, ensuring a robust messaging infrastructure. Let’s embark on this journey together, simplifying the installation process and empowering your system’s capabilities. For more information about using RabbitMQ software, we suggest that you should attend online training RabbitMQ: The Complete Guide with Software Architecture Applications