Перейти к основному содержимому
Версия: 1.21.3

Внешние очереди

Протокол AMQP (Advanced Message Queueing Protocol) – это открытый протокол, который асинхронно передает сообщения между различными приложениями на высокой скорости и с минимальной задержкой.

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

AMQP основан на трех понятиях:

  • Сообщение (message) – единица передаваемых данных, основная его часть (содержание) никак не интерпретируется сервером, к сообщению могут быть прицеплены структурированные заголовки.
  • Точка обмена (exchange) – в нее отправляются сообщения, при этом в точке обмена сообщения не хранятся.
  • Очередь (queue) – здесь хранятся сообщения до тех пор, пока не будет забраны потребителем. Потребитель всегда забирает сообщения из одной или нескольких очередей.

Последовательность обработки


  1. Все сообщения, генерируемые приложением-производителем (producer), сначала принимаются в точку обмена (exchange).
  2. В этой точке они распределяются по очередям. Для отправки сообщений в соответствующие очереди используются привязки (bindings).
    • Отправленные сообщения будут оставаться в этой очереди до тех пор, пока приложение-потребитель (consumer) не подключится и не получит сообщение.
  3. Потребитель получает сообщения.
  4. В AMQP предусмотрен механизм подтверждения доставки: сообщение не будет удалено из очереди, пока не будет подтверждения о получении от потребителя.
    • В случае отрицательного ответа сообщение может быть отправлено повторно или удалено из очереди в зависимости от настроек конфигурации производителем при отправке сообщения.

Подключение к очереди


Для интеграции и отправки сообщений через брокер RabbitMQ, настройте в системе очередь:

  1. Перейдите во Внешние очереди → Поставщики Rabbit.
  2. Нажмите Создать и заполните поля.
  3. Нажмите Сохранить или Сохранить и выйти.
ПолеОбязательноОписание
НазваниеДаУкажите название создаваемой очереди сообщений. По этому названию очереди будет производиться отправка из API.
Имя хостаДаВведите наименование хоста RabbitMQ, к которому осуществляется подключение, в формате example.ru.
ПортДаУкажите порт подключения к серверу.
Виртуальный хостНетУкажите хост, обозначенный в настройках сервера RabbitMQ.
Время ожидания подключенияНетЗадайте время ожидания подключения к серверу RabbitMQ.
Имя пользователяДаУкажите логин пользователя для подключения к серверу RabbitMQ.
ПарольДаВведите пароль пользователя для подключения к серверу RabbitMQ.

Для отправки сообщений в очередь, создайте серверный скрипт обработки сообщений, используя класс SimpleExternalRabbitMQ.