Как установить rabbitmq на windows

Обновлено: 01.07.2024

Краткий обзор RabbitMQ

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

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

Преимущества RabbitMQ

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

Краткий обзор AMQP

Установка RabbitMQ

Пакеты RabbitMQ поставляются системами CentOS/RHEL и Ubuntu/Debian. Но, как правило, такие пакеты устаревшие. Потому рекомендуется скачать и установить RabbitMQ вручную.

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

Установка RabbitMQ в CentOS/RHEL

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

Для установки Erlang используйте команды:

Теперь можно установить RabbitMQ:

Установка RabbitMQ в 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

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

Снова обновите систему:

Теперь можно загрузить и установить RabbitMQ:

sudo apt-get install rabbitmq-server

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

sudo nano /etc/default/rabbitmq-server

Управление RabbitMQ

Как говорилось ранее, брокер RabbitMQ очень прост в использовании. В данном разделе приведены инструкции по управлению и настройке RabbitMQ.

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

Консоль управления RabbitMQ (RabbitMQ Management Console) – это один из доступных плагинов, позволяющий мониторить процессы сервера RabbitMQ через графический пользовательский веб-интерфейс.

При помощи этой консоли можно:

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

sudo rabbitmq-plugins enable rabbitmq_management

Теперь можно открыть консоль при помощи любого удобного браузера:

Стандартные имя и пароль – guest.

Примечание: Запустив консоль после запуска сервиса, не забудьте перезапустить его, чтобы обновить настройки.

Управление RabbitMQ в CentOS/RHEL

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

Чтобы настроить автозапуск RabbitMQ, выполните:

chkconfig rabbitmq-server on

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

Управление RabbitMQ в Ubuntu/Debian

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

Настройка RabbitMQ

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

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

Начало работы с RabbitMQ (1) - Установка и использование RabbitMQ (под Windows)

Установка 1.Erlang

Установщик RabbitMQ

3. Пользовательские переменные среды

Служба будет работать в обычном режиме с настройками по умолчанию. Вы можете настроить среду RabbitMQ или отредактировать конфигурацию.
(1) Конфигурация переменной среды Erl

è¿éåå¾çæè¿°


Добавить в путь

è¿éåå¾çæè¿°

Проверьте правильность конфигурации erl, start-run-cmd, введите erl, отобразится следующее, убедитесь, что конфигурация правильная

è¿éåå¾çæè¿°

(2) Конфигурация переменной среды RabbitMQ
Обратите внимание, здесь вы с оптимизмом смотрите на место установки вашего RabbitMQ и установленную версию. Моя версия 3.7.3

è¿éåå¾çæè¿°

Добавить в путь

è¿éåå¾çæè¿°

4. Активировать rabbitmq_management

Введите следующую команду в CMD

è¿éåå¾çæè¿°

5. Запустите RabbitMQ сервис

Введите следующую команду непосредственно в интерфейсе командной строки

è¿éåå¾çæè¿°


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

Команда для закрытия службы RabbitMQ выглядит следующим образом:

Для корректной работы сервера RabbitMQ необходимо выполнить ряд действий:

После выполнения перезагрузки компьютера необходимо запустить командную строку RabbitMQ (не от администратора). Запуск может быть осуществлен из меню Пуск или через поиск по слову "RabbitMQ".


В командной строке RabbitMQ необходимо ввести команду: rabbitmq-server –detached. Данная команда осуществит запуск сервера. В том случае, если сервер уже запущен, в командной строке будет отображена соответствующая запись. Данный сервер также может быть запущен из Служб Windows (называется RabbitMQ).

В командной строке RabbitMQ необходимо ввести команду: rabbitmq-plugins enable rabbitmq_management. Данная команда осуществит включение плагинов.


Далее требуется создать новую точку доступа на вкладке Exchange. Создаваемая точка доступа должна иметь тип direct (столбец Type).



Далее необходимо создать нового пользователя. Для этого следует перейти на вкладку Admin, на которой необходимо задать имя, пароль, вручную ввести тег administrator в строку Tags и/или нажать на Admin в строке Set. Для сохранения внесенных изменений необходимо нажать на кнопку Add user.


Далее необходимо перейти на данного пользователя и нажать на кнопку Set Permission.


После этого будет отображена таблица Current permissions.


Название очереди, Хост (либо localhost, либо имя сервера), Порт (по умолчанию 5672), Виртуальный хост (по умолчанию / при необходимости (для проверки) в админке у пользователя может быть создан и добавлен новый виртуальный хост, который будет указан в ELMA), Имя точки доступа (то, которое указывали при создании точки доступа), Имя очереди (то, которое указывали при создании очереди, и которую привязали к точке доступа), Логин (если имя хоста = localhost, то можно указать guest с паролем guest, если имя сервера, то указать имя пользователя, которого создавали), Пароль, при необходимости Использовать прокси-сервер.



В том случае, если необходимо остановить сервер RabbitMQ, то необходимо ввести команду rabbitmqctl stop в командную строку RabbitMQ. Сервер также может быть остановлен из Служб Windows (называется RabbitMQ).

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

RabbitMQ испозует протокол AMQP. Чтобы использовть RabbitMQ необходимо поставить клиентскую и серверную части.

Установка сервера

Для установки расширения AMQP для PHP необходимо сначала установить RabbitMQ Server

Добавим следующию строку в файл /etc/apt/sources.list

Установка клиента

Базовые понятия




Здесь важно отметить, что продюсер, консьюмер и брокер могут быть расположены на различных машинах, более того, в большинстве случаев это именно так.


Т.е. схема работы следующая: Первое, что надо сделать, это установить соединение с сервером RabbitMQ. Соединение устанавливается командами

это дефолтные значения. Если достаточно дефолтного значения любого из этих параметров, то его можно опустить. И, напротив, если, к примеру, нужно подключиться к другой машине, в параметре host необходимо указать ее имя или ip адрес.

Используя коннект можно получить объект для канала

На основе полученного канала создаем обменник

и, собственно, саму очередь

Когда обменник и очередь готовы, их можно связать по ключу

Таким образом, получаем два скрипта

Распределенные очереди


Оповещение (acknowledgment)

Все вместе

Полный код продюсера (send.php) будет выглядеть так

Обратите внимание, что очереди создаются с абсолютно идентичными параметрами. Как уже было сказано, повторное создание очереди с иными параметрами вызовет исключение. Также стоит отметить, что если вы уверены, что консьюмер будет запускаться первым, то создание очереди в продюсере не обязательно.

Вывод в первом терминале

Вывод во втором терминале

Рассылка публикаций

В нашем примере будем использовть тип обменника fanout.


Анонимные очереди

Связывание (bindings)

Здесь второй параметр – ключ, по которому связывается обменник и очередь. В данном случае он может быть любой строкой, поскольку его значение игнорируется в случае, если обменник имеет тип fanout.

Все вместе

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

Селективная рассылка

Связывание (bindings)

Связываение уже упоминалось в предыдущем уроке

Прямое связывание (точка-точка)


Множественная связь


Все вместе

Как и в предыдущем уроке, поскольку в данном примере мы имеем дело с анонимными очередями, создаваться они должны на стороне консьюмера, и консьюмер, соответственно, должен быть запущен первым. Из продюсера создание очередей удаляется.

Рассылка по шаблону


Рассмотрим несколько примеров:

  • “quick.orange.rabbit” – в обе очереди
  • “lazy.orange.elephant” – в обе очереди
  • “quick.orange.fox” – только в 1-ую
  • “lazy.brown.fox” – только во 2-ую
  • “quick.brown.fox” – будет отброшена
  • “quick.orange.male.fox” – будет отброшена
  • “lazy.orange.male.fox” – только во 2-ую

Все вместе

Как и в предыдущем уроке, поскольку в данном примере мы имеем дело с анонимными очередями, создаваться они должны на стороне консьюмера, и консьюмер, соответственно, должен быть запущен первым. Из продюсера создание очередей удаляется.

Реализация RPC шаблона

Обратите внимание, что callback очередь создается с флагом AMQP_EXCLUSIVE, что означает, что только один консьюмер может слушать эту очередь.

Correlation ID

В методе, представленном выше, мы предполагаем создавать callback очередь для каждого RPC запроса. Поскольку нельзя однозначно по имени очереди определить какому запросу принадлежит ответ, в запрос также добавляется параметр correlationId, который имеет уникальное значение для каждого запроса. Позже, когда мы получим ответ, мы сможем сравнить его correlationId со значением, переданным вместе с запросом. И в случае их несовпадения просто отбросить полученный ответ.

Итоговый план действий

Все вместе

Читайте также: