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

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

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

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

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

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

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


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

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


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

  1. Перейдите во Внешние очередиПоставщики Rabbit.
  2. Нажмите Создать и заполните поля.
  3. Нажмите Сохранить или Сохранить и выйти.

Поля формы Поставщик RabbitMQ

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

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

Проверка соединения


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

  1. Перейдите в Внешние очередиПоставщики Rabbit.
  2. Откройте нужную запись или создайте новую. Вы можете проверить подключение до сохранения данных.
  3. Нажмите Проверить соединение, чтобы создать тестовое подключение, которое закроется сразу после проверки. Если с подключением все в порядке, появится сообщение об успешном подключении. Если вы видите ошибку, проверьте корректность указанных данных.