Протокол 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.

  • No labels