Внешние очереди
Протокол AMQP (Advanced Message Queueing Protocol) – это открытый протокол, который асинхронно передает сообщения между различными приложениями на высокой скорости и с минимальной задержкой.
Для поддержки связи с внешними сервисами по этому протоколу используется брокер сообщений RabbitMQ. Брокеры сообщений создают двунаправленное соединение с каждой системой приложений. Через это соединение передаются сообщения, они маршрутизируются в соответствующие пункты назначения.
AMQP основан на трех понятиях:
- Сообщение (message) – единица передаваемых данных, основная его часть (содержание) никак не интерпретируется сервером, к сообщению могут быть прицеплены структурированные заголовки.
- Точка обмена (exchange) – в нее отправляются сообщения, при этом в точке обмена сообщения не хранятся.
- Очередь (queue) – здесь хранятся сообщения до тех пор, пока не будет забраны потребителем. Потребитель всегда забирает сообщения из одной или нескольких очередей.
Последовательность обработки
- Все сообщения, генерируемые приложением-производителем (producer), сначала принимаются в точку обмена (exchange).
- В этой точке они распределяются по очередям. Для отправки сообщений в соответствующие очереди используются привязки (bindings).
- Отправленные сообщения будут оставаться в этой очереди до тех пор, пока приложение-потребитель (consumer) не подключится и не получит сообщение.
- Потребитель получает сообщения.
- В AMQP предусмотрен механизм подтверждения доставки: сообщение не будет удалено из очереди, пока не будет подтверждения о получении от потребителя.
- В случае отрицательного ответа сообщение может быть отправлено повторно или удалено из очереди в зависимости от настроек конфигурации производителем при отправке сообщения.
Подключение к очереди
Для интеграции и отправки сообщений через брокер RabbitMQ, настройте в системе очередь:
- Перейдите во Внешние очереди → Поставщики Rabbit.
- Нажмите Создать и заполните поля.
- Нажмите Сохранить или Сохранить и выйти.
Поле | Обязательно | Описание |
---|---|---|
Название | Да | Укажите название создаваемой очереди сообщений. По этому названию очереди будет производиться отправка из API. |
Имя хоста | Да | Введите наименование хоста RabbitMQ, к которому осуществляется подключение, в формате example.ru. |
Порт | Да | Укажите порт подключения к серверу. |
Виртуальный хост | Нет | Укажите хост, обозначенный в настройках сервера RabbitMQ. |
Время ожидания подключения | Нет | Задайте время ожидания подключения к серверу RabbitMQ. |
Имя пользователя | Да | Укажите логин пользователя для подключения к серверу RabbitMQ. Не используйте специальные символы в логине, чтобы избежать сбоя в соединении к внешней очереди. |
Пароль | Да | Введите пароль пользователя для подключения к серверу RabbitMQ. Не используйте специальные символы в пароле, чтобы избежать сбоя в соединении к внешней очереди. |
Для отправки сообщений в очередь, создайте серверный скрипт обработки сообщений, используя класс SimpleExternalRabbitMQ.