Поиск по сайту:

Как установить и управлять RabbitMQ


Введение

Откладывать дела на некоторое время вместо того, чтобы немедленно их делать, можно считать ленью. На самом деле, большую часть времени, вероятно, так оно и есть. Однако бывают случаи, когда это совершенно правильно. Иногда нужно на время отложить трудоемкую работу; его нужно поставить в очередь для будущего выполнения, чтобы можно было заняться чем-то более важным. Для этого вам нужен брокер: кто-то, кто будет принимать сообщения (например, задания, задачи) от разных отправителей (например, веб-приложения), ставить их в очередь и распределять среди соответствующих сторон (например, рабочих), чтобы использовать их - все асинхронно и по запросу.

В этой статье DigitalOcean мы познакомим вас с проектом RabbitMQ: стеком приложений брокера сообщений с открытым исходным кодом, который реализует расширенный протокол очереди сообщений (AMQP) для обработки всего описанного нами сценария. выше.

Обмен сообщениями, брокеры сообщений и очереди

Обмен сообщениями — это способ обмена определенными данными между процессами, приложениями и серверами (виртуальными и физическими). Эти сообщения, которыми обмениваются, помогая с определенными техническими потребностями, могут состоять из чего угодно, от простых текстовых сообщений до больших двоичных данных, предназначенных для решения различных задач. Чтобы это работало, необходим интерфейс, управляемый сторонней программой (промежуточным программным обеспечением)… Добро пожаловать, Message Brokers.

Брокеры сообщений обычно представляют собой стеки приложений с выделенными частями, охватывающими каждый этап настройки обмена. От принятия сообщения до постановки его в очередь и доставки запрашивающей стороне брокеры выполняют обязанности, которые обычно были бы гораздо более громоздкими при использовании неспециализированных решений или простых хаков, таких как использование базы данных, заданий cron, и т. д. Они просто работают, имея дело с очередями, которые технически представляют собой бесконечные буферы, чтобы помещать сообщения и доставлять их позже для автоматической обработки или путем опроса.

Зачем их использовать?

Эти решения для обработки сообщений действуют как посредники для различных служб (например, вашего веб-приложения). Их можно использовать для значительного сокращения нагрузки и времени доставки серверами веб-приложений, поскольку задачи, обработка которых обычно занимает довольно много времени, могут быть делегированы третьей стороне, единственной задачей которой является их выполнение (например, работники). Они также пригодятся, когда требуется более «гарантированное» постоянство для передачи информации из одного места в другое.

Когда их использовать?

Все вместе взятые, объясняемые основные функции расширяются, чтобы охватить множество областей, включая, но не ограничиваясь:

  • Разрешение веб-серверам быстро отвечать на запросы вместо того, чтобы выполнять ресурсоемкие процедуры на месте.
  • Распространение сообщения нескольким получателям для потребления (например, обработка)
  • Позволить офлайн-сторонам (т. е. отключенному пользователю) получать данные позже, вместо того, чтобы терять их безвозвратно.
  • Внедрение полностью асинхронной функциональности в серверные системы
  • Порядок и приоритетность задач
  • Балансировка нагрузки между работниками
  • Значительно повысьте надежность и время безотказной работы вашего приложения
  • и многое другое

RabbitMQ

RabbitMQ — одно из наиболее популярных на рынке решений брокера сообщений, предлагаемое с лицензией с открытым исходным кодом (Mozilla Public License v1.1) в качестве реализации протокола Advanced Message Queuing Protocol. Разработанный с использованием языка Erlang, он на самом деле относительно прост в использовании и запуске. Впервые он был опубликован в начале 2007 года и с тех пор активно развивается, его последний выпуск — версия 3.2.2 (декабрь 2013 года).

Как это работает?

RabbitMQ работает, предлагая интерфейс, соединяющий отправителей сообщений (издателей) с получателями (потребителями) через обмен (брокер), который распределяет данные по соответствующим спискам (очередям сообщений).

APPLICATION       EXCHANGE        TASK LIST        WORKER
   [DATA] -------> [DATA] ---> [D]+[D][D][D] --->  [DATA]
 Publisher        EXCHANGE          Queue         Consumer 

Чем он отличается от других?

RabbitMQ, в отличие от некоторых других решений, представляет собой полноценный стек приложений (то есть брокер сообщений). Он дает вам все инструменты, с которыми вам нужно работать, вместо того, чтобы действовать как фреймворк, чтобы вы могли реализовать свои собственные. Будучи чрезвычайно популярным, очень легко начать использовать RabbitMQ и найти ответы на свои вопросы в Интернете.

Кратко о расширенном протоколе очереди сообщений (AMQP)

AMQP — широко распространенный стандарт с открытым исходным кодом для распространения и передачи сообщений от источника к получателю. В качестве протокола и стандарта он устанавливает общую основу для взаимодействия различных приложений и промежуточного программного обеспечения брокера сообщений, не сталкиваясь с проблемами, вызванными индивидуально заданными проектными решениями.

Установка RabbitMQ

Пакеты RabbitMQ распространяются как с системами на базе CentOS/RHEL, так и с Ubuntu/Debian. Однако они, как и большинство приложений, устарели. Поэтому рекомендуемый способ получить RabbitMQ в вашей системе — загрузить пакет онлайн и установить вручную.

Примечание. Мы будем выполнять наши установки и выполнять действия, перечисленные здесь, на свежем и только что созданном VPS по разным причинам. Если вы активно обслуживаете клиентов и, возможно, изменили свою систему, чтобы ничего не сломать и не столкнуться с проблемами, вам настоятельно рекомендуется попробовать следующие инструкции на новой системе.

Установка в системах на базе CentOS 6/RHEL

Перед установкой RabbitMQ нам нужно получить его основные зависимости, такие как Erlang. Однако в первую очередь мы должны обновить нашу систему и ее приложения по умолчанию.

Запустите следующее, чтобы обновить нашу каплю:

yum -y update

И давайте воспользуемся приведенными ниже командами, чтобы установить Erlang в нашей системе:

# Add and enable relevant application repositories:
# Note: We are also enabling third party remi package repositories.
wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
wget http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
sudo rpm -Uvh remi-release-6*.rpm epel-release-6*.rpm

# Finally, download and install Erlang:
yum install -y erlang

Получив Erlang, мы можем продолжить установку RabbitMQ:

# Download the latest RabbitMQ package using wget:
wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.2.2/rabbitmq-server-3.2.2-1.noarch.rpm

# Add the necessary keys for verification:
rpm --import http://www.rabbitmq.com/rabbitmq-signing-key-public.asc

# Install the .RPM package using YUM:
yum install rabbitmq-server-3.2.2-1.noarch.rpm

Установка в системах на базе Ubuntu 13/Debian 7

Процесс загрузки и установки RabbitMQ в Ubuntu и Debian будет аналогичен CentOS из-за нашего желания иметь более новую версию.

Начнем с обновления набора инструментов приложения по умолчанию в нашей системе:

apt-get    update 
apt-get -y upgrade

Включите репозиторий приложений RabbitMQ:

echo "deb http://www.rabbitmq.com/debian/ testing main" >> /etc/apt/sources.list

Добавьте ключ подтверждения для пакета:

curl http://www.rabbitmq.com/rabbitmq-signing-key-public.asc | sudo apt-key add -

Обновите исходники нашим новым дополнением сверху:

apt-get update

И, наконец, скачайте и установите RabbitMQ:

sudo apt-get install rabbitmq-server

Чтобы управлять максимальным количеством подключений при запуске, откройте и отредактируйте следующий файл конфигурации с помощью nano:

sudo nano /etc/default/rabbitmq-server

Раскомментируйте строку limit (т. е. удалите #) перед сохранением и выйдите, нажав CTRL+X, а затем Y.

Управление RabbitMQ

Как мы упоминали ранее, начать работу с RabbitMQ очень просто. Используя приведенные ниже инструкции для вашей системы, вы можете быстро управлять ее процессом и запускать ее при запуске системы (т. е. при загрузке).

Включение консоли управления

Консоль управления RabbitMQ — это один из доступных подключаемых модулей, который позволяет отслеживать серверный процесс [RabbitMQ] через графический веб-интерфейс пользователя (GUI).

С помощью этой консоли вы можете:

  • Управление обменами, очередями, привязками, пользователями
  • Мониторинг очередей, скорости сообщений, подключений
  • Отправка и получение сообщений
  • Мониторинг процессов Erlang, использование памяти
  • И многое другое

Чтобы включить консоль управления RabbitMQ, выполните следующее:

sudo rabbitmq-plugins enable rabbitmq_management

После того, как вы включили консоль, к ней можно получить доступ с помощью вашего любимого веб-браузера, посетив: http://[ваш IP-дроплет]:15672/.

Имя пользователя и пароль по умолчанию установлены как «гость» для входа в систему.

Примечание. Если вы включите эту консоль после запуска службы, вам потребуется перезапустить ее, чтобы изменения вступили в силу. См. соответствующий раздел управления ниже, чтобы ваша операционная система могла это сделать.

Управление системами на базе CentOS/RHEL

После установки приложения RabbitMQ по умолчанию не запускается при загрузке системы.

Чтобы RabbitMQ запускался как демон по умолчанию, выполните следующее:

chkconfig rabbitmq-server on

Для запуска, остановки, перезапуска и проверки состояния приложения используйте следующее:

# To start the service:
/sbin/service rabbitmq-server start

# To stop the service:
/sbin/service rabbitmq-server stop

# To restart the service:
/sbin/service rabbitmq-server restart
    
# To check the status:
/sbin/service rabbitmq-server status

Управление системами на базе Ubuntu/Debian

Чтобы запустить, остановить, перезапустить и проверить состояние приложения в Ubuntu и Debian, используйте следующее:

# To start the service:
service rabbitmq-server start

# To stop the service:
service rabbitmq-server stop

# To restart the service:
service rabbitmq-server restart
    
# To check the status:
service rabbitmq-server status

Вот и все! Теперь у вас есть собственная очередь сообщений, работающая на вашем виртуальном сервере.

Настройка RabbitMQ

RabbitMQ по умолчанию работает со своей стандартной конфигурацией. В целом, для большинства нужд не требуется особых доработок, пока все идет гладко.

Чтобы узнать о его настройке для пользовательских нужд, ознакомьтесь с его документацией по конфигурации.

Прислано: