Установка, настройка и использование RabbitMQ
Интернет версии Веб 2.0 начал активно развиваться в начале 21 века, с появлением новых сайтов и веб-приложений. Используя синхронные вызовы, разработчики столкнулись с трудностями обмена данными. Асинхронные системы обмена сообщениями решили эти проблемы, позволяя передавать данные через посредников. В статье мы рассмотрим брокер сообщений RabbitMQ и как его настроить.
Что такое RabbitMQ
RabbitMQ — это брокер распределенных сообщений, который создан на основе стандарта AMQP (Advanced Message Queuing Protocol). Этот брокер сообщений собирает потоковые данные из нескольких источников, после чего распределяет и маршрутизирует их для дальнейшей обработки.
Компания LShift совместно с CohesiveFT поставили цель по разработке брокера сообщений с поддержкой AMQP — открытого стандарта, который помогает совместить системы обмена сообщениями между собой. Так в 2007 году появился брокер сообщений RabbitMQ.
По мере развития продукта в RabbitMQ была добавлена поддержка протоколов MQTT (Message Queuing Telemetry Transport) и STOMP (Simple Text Oriented Message Protocol). Это позволило интегрировать брокер сообщений со многими популярными устройствами и приложениями.
Также RabbitMQ обладает рядом преимуществ, среди которых:
- надежность. Это значит, что все сообщения в RabbitMQ будут доставлены с соблюдением порядка, даже если произошел технический сбой;
- масштабируемость. Брокер сообщений способен работать с большими объемами данных. Также он может быть развернут не только на отдельном сервере, но и в распределенной среде;
- гибкость. RabbitMQ поддерживает большое количество сценариев для маршрутизации и распределения сообщений. Это позволяет сочетать программу со многими приложениями.
Принципы работы RabbitMQ
Брокер сообщений RabbitMQ включает в себя несколько компонентов:
- Сообщение (Message) — данные любого типа и формата, которые доставляются от отправителя к получателю через очередь.
- Продюсер (Producer) — компонент, который размещает сообщения в обменнике.
- Обменник (Exchange) — элемент, который принимает сообщения и распределяет их по очередям.
- Биндинг (Binding) — соединение между обменником и очередью. Это своеобразный «коридор», по которому сообщение направляется в нужную очередь.
- Очередь (Queue) — пространство, в котором хранятся сообщения до их обработки получателем. Очереди могут быть как постоянными, так и временными.
- Получатель (Consumer) — элемент, который принимает сообщения из очередей и обрабатывает их.
RabbitMQ работает по следующему алгоритму:
- Продюсер направляет сообщение в обменник.
- Обменник назначает нужную очередь и отправляет в нее сообщение.
- Получатель подписывается на очередь, чтобы принять сообщение.
- Получатель принимает сообщение и обрабатывает его.
- Получатель отправляет подтверждение о том, что принял сообщение.
- Если получатель не отправил подтверждение о доставке, сообщение возвращается обратно в свою очередь.

Как установить и настроить RabbitMQ на Ubuntu и Debian
Чтобы начать установку:
- Подключитесь к серверу по протоколу SSH.
- Обновите список пакетов:
1 |
sudo apt update |
3. Установите пакеты erlang и gnupg — они понадобятся для корректной работы RabbitMQ:
1 |
sudo apt install gnupg erlang -y |
4. Установите RabbitMQ:
1 |
sudo apt install rabbitmq-server -y |
5. Добавьте службу в автозагрузку:
1 |
sudo systemctl enable rabbitmq-server |
6. Запустите службу:
1 |
sudo systemctl start rabbitmq-server |
7. Проверьте, запущен ли RabbitMQ:
1 |
sudo systemctl status rabbitmq-server |
Служба должна иметь статус Active:
1 2 3 4 5 6 7 |
rabbitmq-server.service - RabbitMQ Messaging Server Loaded: loaded (/usr/lib/systemd/system/rabbitmq-server.service; enabled; preset: enabled) Active: active (running) since Wed 2025-01-01 10:00:00 MSK; 3h 55min ago Main PID: 22926 (beam.smp) Tasks: 22 (limit: 1126) Memory: 104.2M (peak: 133.1M) CPU: 1min 55.154s |
8. Добавьте плагин для управления брокером сообщений:
1 2 |
sudo rabbitmq-plugins enable rabbitmq_management |
9. Создайте пользователя:
1 |
sudo rabbitmqctl add_user username Password |
Где:
- username — имя пользователя,
- Password — пароль пользователя.
10. Присвойте пользователю привилегии администратора:
1 |
sudo rabbitmqctl set_user_tags username administrator |
Вместо username укажите имя пользователя.
11. Предоставьте пользователю полные права ко всем файлам сервера:
1 |
sudo rabbitmqctl set_permissions -p / username ".*" ".*" ".*" |
Вместо username укажите имя пользователя.
12. В настройках брандмауэра откройте порты для работы RabbitMQ:
1 |
sudo ufw allow 5672,15672/tcp |
Затем перезапустите брандмауэр:
1 |
sudo ufw reload |
13. Перезапустите RabbitMQ:
1 2 |
systemctl restart rabbitmq-server3 |
14. Проверьте, как прошла установка. Для этого в адресной строке браузера введите 123.123.123.123:15672 (вместо 123.123.123.123 укажите IP-адрес вашего сервера). Если установка прошла корректно, на экране отобразится окно авторизации. Введите логин и пароль, которые вы создали на шаге 9, и кликните Login:

Как установить и настроить RabbitMQ на CentOS Stream
Чтобы начать установку:
- Подключитесь к серверу по протоколу SSH.
- Обновите список пакетов:
1 |
sudo dnf update -y |
3. Добавьте GPG-ключи для RabbitMQ и Erlang. Для этого поочередно выполните команды:
1 2 |
rpm --import 'https://github.com/rabbitmq/signing-keys/releases/download/3.0/ rabbitmq-release-signing-key.asc' |
1 2 |
rpm --import 'https://github.com/rabbitmq/signing-keys/releases/download/3.0/ cloudsmith.rabbitmq-erlang.E495BB49CC4BBE5B.key' |
1 2 |
rpm --import 'https://github.com/rabbitmq/signing-keys/releases/download/3.0/ cloudsmith.rabbitmq-server.9F4587F226208342.key' |
4. Создайте файл репозитория:
1 |
sudo nano /etc/yum.repos.d/rabbitmq.repo |
Затем добавьте строки:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 |
# In /etc/yum.repos.d/rabbitmq.repo ## ## Zero dependency Erlang RPM ## [modern-erlang] name=modern-erlang-el9 # Use a set of mirrors maintained by the RabbitMQ core team. # The mirrors have significantly higher bandwidth quotas. baseurl=https://yum1.rabbitmq.com/erlang/el/9/$basearch https://yum2.rabbitmq.com/erlang/el/9/$basearch repo_gpgcheck=1 enabled=1 gpgkey=https://github.com/rabbitmq/signing-keys/releases/download/3.0/cloudsmith.rabbitmq-erlang.E495BB49CC4BBE5B.key gpgcheck=1 sslverify=1 sslcacert=/etc/pki/tls/certs/ca-bundle.crt metadata_expire=300 pkg_gpgcheck=1 autorefresh=1 type=rpm-md [modern-erlang-noarch] name=modern-erlang-el9-noarch # Use a set of mirrors maintained by the RabbitMQ core team. # The mirrors have significantly higher bandwidth quotas. baseurl=https://yum1.rabbitmq.com/erlang/el/9/noarch https://yum2.rabbitmq.com/erlang/el/9/noarch repo_gpgcheck=1 enabled=1 gpgkey=https://github.com/rabbitmq/signing-keys/releases/download/3.0/cloudsmith.rabbitmq-erlang.E495BB49CC4BBE5B.key https://github.com/rabbitmq/signing-keys/releases/download/3.0/rabbitmq-release-signing-key.asc gpgcheck=1 sslverify=1 sslcacert=/etc/pki/tls/certs/ca-bundle.crt metadata_expire=300 pkg_gpgcheck=1 autorefresh=1 type=rpm-md [modern-erlang-source] name=modern-erlang-el9-source # Use a set of mirrors maintained by the RabbitMQ core team. # The mirrors have significantly higher bandwidth quotas. baseurl=https://yum1.rabbitmq.com/erlang/el/9/SRPMS https://yum2.rabbitmq.com/erlang/el/9/SRPMS repo_gpgcheck=1 enabled=1 gpgkey=https://github.com/rabbitmq/signing-keys/releases/download/3.0/cloudsmith.rabbitmq-erlang.E495BB49CC4BBE5B.key https://github.com/rabbitmq/signing-keys/releases/download/3.0/rabbitmq-release-signing-key.asc gpgcheck=1 sslverify=1 sslcacert=/etc/pki/tls/certs/ca-bundle.crt metadata_expire=300 pkg_gpgcheck=1 autorefresh=1 ## ## RabbitMQ Server ## [rabbitmq-el9] name=rabbitmq-el9 baseurl=https://yum2.rabbitmq.com/rabbitmq/el/9/$basearch https://yum1.rabbitmq.com/rabbitmq/el/9/$basearch repo_gpgcheck=1 enabled=1 # Cloudsmith's repository key and RabbitMQ package signing key gpgkey=https://github.com/rabbitmq/signing-keys/releases/download/3.0/cloudsmith.rabbitmq-server.9F4587F226208342.key https://github.com/rabbitmq/signing-keys/releases/download/3.0/rabbitmq-release-signing-key.asc gpgcheck=1 sslverify=1 sslcacert=/etc/pki/tls/certs/ca-bundle.crt metadata_expire=300 pkg_gpgcheck=1 autorefresh=1 type=rpm-md [rabbitmq-el9-noarch] name=rabbitmq-el9-noarch baseurl=https://yum2.rabbitmq.com/rabbitmq/el/9/noarch https://yum1.rabbitmq.com/rabbitmq/el/9/noarch repo_gpgcheck=1 enabled=1 # Cloudsmith's repository key and RabbitMQ package signing key gpgkey=https://github.com/rabbitmq/signing-keys/releases/download/3.0/cloudsmith.rabbitmq-server.9F4587F226208342.key https://github.com/rabbitmq/signing-keys/releases/download/3.0/rabbitmq-release-signing-key.asc gpgcheck=1 sslverify=1 sslcacert=/etc/pki/tls/certs/ca-bundle.crt metadata_expire=300 pkg_gpgcheck=1 autorefresh=1 type=rpm-md [rabbitmq-el9-source] name=rabbitmq-el9-source baseurl=https://yum2.rabbitmq.com/rabbitmq/el/9/SRPMS https://yum1.rabbitmq.com/rabbitmq/el/9/SRPMS repo_gpgcheck=1 enabled=1 gpgkey=https://github.com/rabbitmq/signing-keys/releases/download/3.0/cloudsmith.rabbitmq-server.9F4587F226208342.key gpgcheck=0 sslverify=1 sslcacert=/etc/pki/tls/certs/ca-bundle.crt metadata_expire=300 pkg_gpgcheck=1 autorefresh=1 type=rpm-md |
После этого сохраните изменения и закройте файл.
5. Выполните обновление, чтобы применить новые репозитории:
1 |
sudo dnf update -y |
6. Установите зависимости для корректной работы RabbitMQ:
1 |
sudo dnf install -y socat logrotate |
7. Установите Erlang и RabbitMQ:
1 |
sudo dnf install -y erlang rabbitmq-server |
8. Запустите службу RabbitMQ и добавьте ее в автозагрузку. Для этого поочередно выполните команды:
1 2 |
sudo systemctl start rabbitmq-server sudo systemctl enable rabbitmq-server |
9. Убедитесь в том, что RabbitMQ запущен. Для этого выполните команду:
1 |
sudo systemctl status rabbitmq-server |
Вывод должен иметь следующий вид:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
rabbitmq-server.service - RabbitMQ broker Loaded: loaded (/usr/lib/systemd/system/rabbitmq-server.service; enabled; > Active: active (running) since Mon 2025-02-10 16:39:26 MSK; 22s ago Invocation: 9a6f712eb6fd482fa89bbd9058e2efbc Main PID: 17346 (beam.smp) Tasks: 26 (limit: 5923) Memory: 82.4M (peak: 104.7M) CPU: 2.145s CGroup: /system.slice/rabbitmq-server.service ├─17346 /usr/lib64/erlang/erts-15.2.1/bin/beam.smp -W w -MBas agef> ├─17359 erl_child_setup 32768 ├─17374 sh -s disksup ├─17376 /usr/lib64/erlang/lib/os_mon-2.10.1/priv/bin/memsup ├─17377 /usr/lib64/erlang/lib/os_mon-2.10.1/priv/bin/cpu_sup ├─17378 /usr/lib64/erlang/erts-15.2.1/bin/inet_gethost 4 ├─17379 /usr/lib64/erlang/erts-15.2.1/bin/inet_gethost 4 ├─17388 /usr/lib64/erlang/erts-15.2.1/bin/epmd -daemon └─17409 /bin/sh -s rabbit_disk_monitor |
10. Включите плагин управления брокером сообщения:
1 |
sudo rabbitmq-plugins enable rabbitmq_management |
11. Создайте пользователя:
1 |
sudo rabbitmqctl add_user username Password |
Где:
- username — имя пользователя,
- Password — пароль пользователя
- Присвойте пользователю привилегии администратора:
1 |
sudo rabbitmqctl set_user_tags username administrator |
Вместо username укажите имя пользователя.
- Предоставьте пользователю полные права ко всем файлам сервера:
1 |
sudo rabbitmqctl set_permissions -p / username ".*" ".*" ".*" |
Вместо username укажите имя пользователя.
- В настройках брандмауэра откройте порты для работы RabbitMQ. Для этого поочередно выполните команды:
1 2 |
sudo firewall-cmd --add-port={5672,15672}/tcp --permanent sudo firewall-cmd --reload |
Проверьте, как прошла установка. Для этого в адресной строке браузера введите 123.123.123.123:15672 (вместо 123.123.123.123 укажите IP-адрес вашего сервера). Если установка прошла корректно, на экране отобразится окно авторизации. Введите логин и пароль, которые вы создали на шаге 11, и кликните Login:

Мы описали установку RabbitMQ для трех наиболее популярных операционных систем. С полным списком поддерживаемых ОС и процедурами установки вы можете ознакомиться в официальной документации.
Галина Петрова