Установка, настройка и использование 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 включает в себя несколько компонентов:

  1. Сообщение (Message) — данные любого типа и формата, которые доставляются от отправителя к получателю через очередь.
  2. Продюсер (Producer) — компонент, который размещает сообщения в обменнике.
  3. Обменник (Exchange) — элемент, который принимает сообщения и распределяет их по очередям.
  4. Биндинг (Binding) — соединение между обменником и очередью. Это своеобразный «коридор», по которому сообщение направляется в нужную очередь.
  5. Очередь (Queue) — пространство, в котором хранятся сообщения до их обработки получателем. Очереди могут быть как постоянными, так и временными.
  6. Получатель (Consumer) — элемент, который принимает сообщения из очередей и обрабатывает их.

RabbitMQ работает по следующему алгоритму:

  1. Продюсер направляет сообщение в обменник.
  2. Обменник назначает нужную очередь и отправляет в нее сообщение.
  3. Получатель подписывается на очередь, чтобы принять сообщение.
  4. Получатель принимает сообщение и обрабатывает его.
  5. Получатель отправляет подтверждение о том, что принял сообщение.
  6. Если получатель не отправил подтверждение о доставке, сообщение возвращается обратно в свою очередь.
Источник: Shutterstock. Подробная инструкция по установке и настройке RabbitMQ поможет даже тем, у кого лапки

Как установить и настроить RabbitMQ на Ubuntu и Debian

Чтобы начать установку:

  1. Подключитесь к серверу по протоколу SSH.
  2. Обновите список пакетов:

3. Установите пакеты erlang и gnupg — они понадобятся для корректной работы RabbitMQ:

4. Установите RabbitMQ:

5. Добавьте службу в автозагрузку:

6. Запустите службу:

7. Проверьте, запущен ли RabbitMQ:

Служба должна иметь статус Active:

8. Добавьте плагин для управления брокером сообщений:

9. Создайте пользователя:

Где:

  • username — имя пользователя,
  • Password — пароль пользователя.

10. Присвойте пользователю привилегии администратора:

Вместо username укажите имя пользователя.

11. Предоставьте пользователю полные права ко всем файлам сервера:

Вместо username укажите имя пользователя.

12. В настройках брандмауэра откройте порты для работы RabbitMQ:

Затем перезапустите брандмауэр:

13. Перезапустите RabbitMQ:

14. Проверьте, как прошла установка. Для этого в адресной строке браузера введите 123.123.123.123:15672 (вместо 123.123.123.123 укажите IP-адрес вашего сервера). Если установка прошла корректно, на экране отобразится окно авторизации. Введите логин и пароль, которые вы создали на шаге 9, и кликните Login:

Как установить и настроить RabbitMQ на CentOS Stream

Чтобы начать установку:

  1. Подключитесь к серверу по протоколу SSH.
  2. Обновите список пакетов:

3. Добавьте GPG-ключи для RabbitMQ и Erlang. Для этого поочередно выполните команды:

4. Создайте файл репозитория:

Затем добавьте строки:

После этого сохраните изменения и закройте файл.

5. Выполните обновление, чтобы применить новые репозитории:

6. Установите зависимости для корректной работы RabbitMQ:

7. Установите Erlang и RabbitMQ:

8. Запустите службу RabbitMQ и добавьте ее в автозагрузку. Для этого поочередно выполните команды:

9. Убедитесь в том, что RabbitMQ запущен. Для этого выполните команду:

Вывод должен иметь следующий вид:

10. Включите плагин управления брокером сообщения:

11. Создайте пользователя:

Где:

  • username — имя пользователя,
  • Password — пароль пользователя
  1. Присвойте пользователю привилегии администратора:

Вместо username укажите имя пользователя.

  1. Предоставьте пользователю полные права ко всем файлам сервера:

Вместо username укажите имя пользователя.

  1. В настройках брандмауэра откройте порты для работы RabbitMQ. Для этого поочередно выполните команды:

Проверьте, как прошла установка. Для этого в адресной строке браузера введите 123.123.123.123:15672 (вместо 123.123.123.123 укажите IP-адрес вашего сервера). Если установка прошла корректно, на экране отобразится окно авторизации. Введите логин и пароль, которые вы создали на шаге 11, и кликните Login:

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

Галина Петрова

Кейс Stworka: как создать ERP в облаке для 5000 строительных компаний

А также запустить маркетплейс для строителей и обрабатывать 1,5 млн артикулов ежедневно. Рассказываем, как компания Stworka развернула IT-инфраструктуру в Облаке...
Read More

Системы контроля версий: зачем они нужны и как их использовать

Мир разработки ПО издалека кажется непонятным и запутанным, но существуют инструменты, которые значительно упрощают жизнь и делают работу более эффективной....
Read More

Соглашение об уровне обслуживания (SLA)

Поговорим о документе, который может серьезно повлиять на успех проекта, будь то интернет-магазин, SaaS-платформа или любой другой онлайн-сервис. Речь пойдет...
Read More

Что такое S3 (Simple Storage Service)

Если вы только начинаете свой путь в разработке, вам обязательно нужно познакомиться с S3. Это краеугольный камень многих современных приложений...
Read More

Полный обзор NoSQL: особенности и использование

Развитие интернета диктует новые правила в разработке. Традиционные базы данных, которые называются реляционными (RDBMS), не справляются с задачами, которые требуют...
Read More

Как использовать DataSphere. Датасеты в DataSphere

Данные нужны в любой сфере: магазины анализируют продажи, в медцентры — истории болезней, ученые — результаты экспериментов. Чем больше информации,...
Read More

Основные задачи машинного обучения: классификация, регрессия, кластеризация и уменьшение размерности

Machine Learning ― это уже часть нашей повседневной жизни. От рекомендаций фильмов на Кинопоиске до спам-фильтров в почте — за...
Read More

Обзор CLI: командная строка и ее возможности

Когда были созданы первые компьютеры, операционной системой на них можно было управлять только при помощи ввода текстовых команд. Со временем...
Read More

Шардирование в базах данных: обзор концепции

В условиях стремительного роста объемов данных и увеличения нагрузок на информационные системы эффективность их масштабирования становится критически важной. Одним из...
Read More

Графический процессор (GPU): что это, для кого, разновидности

Дизайнерам, проектировщикам и разработчикам требуются мощные вычислительные ресурсы для работы. Обычный процессор (CPU) не справится с такими задачами, как обработка...
Read More