How to Install RabbitMQ On the AWS Ec2 Instance

Written by satyapasupuleti | Published 2021/09/30
Tech Story Tags: rabbitmq | tcp | message-broker | routing | programming | exchange | ec2 | rabbitmq-installation

TLDR RabbitMQ is a message broker that implements an advanced message queueing protocol. Instead of sending messages to the queue, AMQP sends a message to an exchange. Exchange distributes the message to the queues using a concept called Binding. Queue helps in sharing the load and increases performance. RabbitMQ on CentOS 7: EPEL (Extra Packages for Enterprise Linux) is an open-source and free community-based repository. It provides easy access to install packages for commonly used software.via the TL;DR App

In a simple application, a sender sends a message through a TCP protocol, and the receiver receives it. After receiving the message, the receiver needs to send a message back to the sender. If the sender does not receive the message, it tries to connect continuously or send messages to the receiver. If there are many messages to send and the receiver is not responding, the application will crash.

A message queue is created to avoid this problem. A sender can send as many messages as possible, and they move on to their next task. Receiver whenever he is ready he can receive another message. Queue helps in sharing the load and increases performance.

RabbitMQ

RabbitMQ is a message broker that implements an advanced message queueing protocol. Instead of sending a message to the queue, AMQP, it sends a message to an exchange. It acts as a post office. The exchange receives the messages from the sender with a "Routing key". Exchange distributes the message to the queues using a concept called Binding. Exchange is connected to multiple queues. The unique binding key can distinguish each Binding from exchange to queue. Queues are connected to the receiver (You may have one or more receivers).

One great thing about the RabbitMQ model is the flexibility with which the messages can move through the system. Flexibility comes with different exchanges that are available.

For example, fan-out exchange simply ignores the routing key and sends the message to all the available queues.

Direct exchanges send messages to the specific queues where binding key = routing key.

RabbitMQ has one particular exchange default(nameless) exchange. Here the exchanges compare routing key with queue name (not with binding key). When a routing key matches with the queue name, exchanges forward the message to the queue. This helps in the instant sending of a message to the queue.

To sum up:

  1. The sender sends a message to exchange with routing key.
  2. The receiver receives a message from the queue.
  3. Binding connects exchange and queue using the binding key.
  4. Exchange compares routing key with binding key.
  5. The messages distribution way depends on the type of exchange you use.
  6. Different kinds of Exchanges are fan-out direct, nameless, topic header, etc.

How to do it

Install RabbitMQ on CentOS 7: EPEL (Extra Packages for Enterprise Linux) is an open-source and free community-based repository. It provides easy access to install packages for commonly used software. RabbitMQ is included in standard Fedora and RHEL repositories.

Log in to the instance and switch to root and execute the following commands.

  1. Sudo install wget -y

  2. sudo yum -y install epel-release

  3. sudo yum -y update

  4. wget http://packages.erlang-solutions.com/erlang-solutions-1.0-1.noarch.rpm ( To download repository)

  5. sudo rpm -Uvh erlang-solutions-1.0-1.noarch.rpm ( To add repository)

  6. sudo yum -y install erlang socat logrotate (To Install erlang and dependencies)

  7. wget https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.8.8/rabbitmq-server-3.8.8-1.el6.noarch.rpm (To download RabbitMQ package)

  8. sudo sh script.rpm.sh

  9. sudo rpm --import https://www.rabbitmq.com/rabbitmq-signing-key-public.asc (To add Signing key)

  10. sudo rpm -Uvh rabbitmq-server-3.8.8-1.el6.noarch.rpm or

    wget https://packagecloud.io/install/repositories/rabbitmq/rabbitmq-server/script.rpm.sh

  11. sudo yum update -y

  12. sudo systemctl start rabbitmq-server

  13. sudo systemctl enable rabbitmq-server

  14. sudo firewall-cmd –reload

  15. sudo setsebool -P nis_enabled 1

  16. sudo rabbitmq-plugins enable rabbitmq_management

  17. sudo chown -R rabbitmq:rabbitmq /var/lib/rabbitmq/

  18. sudo rabbitmqctl add_user admin password

  19. sudo rabbitmqctl set_user_tags admin administrator

  20. sudo rabbitmqctl set_permissions -p / admin "." "." ".*"

    To access the RabbitMQ admin: http://Your_Server_IP:15672


Written by satyapasupuleti | I discovered Aws is my another source of joy. On a mission to reinvent myself. Enjoys cricket.
Published by HackerNoon on 2021/09/30