Skip to the content.

Начало

RabbitMQ

DaJet Script реализует работу с RabbitMQ при помощи двух команд: CONSUME и PRODUCE. В данном случае речь идёт о работе с обычными очередями RabbitMQ, а не потоками сообщений RabbitMQ Streams.

Команда CONSUME создаёт потребителя, который работает аналогично потоковым командам для баз данных STREAM и CONSUME. То есть создаётся бесконечный замкнутый цикл получения сообщений от брокера RabbitMQ. Далее эти сообщения передаются следующим по конвейеру DaJet Script командам для обработки.

Команда CONSUME работает с брокером RabbitMQ по принципу PUSH от сервера. То есть клиент DaJet Script устанавливает подключение к брокеру и ждёт от него сообщений. Как только сообщения появляются в соответствующей очереди брокера, они сразу же отправляются клиенту. Командой CONSUME реализуется механизм подтверждения полученных от брокера сообщений (consumer aknowledgements). Это очень важно с точки зрения обеспечения надёжного обмена данными без потери сообщений.

Команда PRODUCE выполняет функцию публикации сообщений в брокере RabbitMQ. Команда PRODUCE является “непрозрачной”, то есть замыкает конвейер обработки сообщений/данных и не передаёт их далее по конвейеру DaJet Script. Использование команды PRODUCE проектировалось в основном для совместного использования с командами баз данных STREAM и CONSUME.

Команда PRODUCE отправляет сообщения в очередь или топик брокера RabbitMQ асинхронно. Сообщения отправляются пакетами, а затем выполняется ожидание подтверждения получения этих сообщений от брокера (publisher confirms). Это, также как и в случае с потреблением сообщений, очень важный механизм с точки зрения обеспечения надёжного обмена данными без потери сообщений.

Важно! Более подробно про механизмы подтверждения сообщений можно и нужно прочитать в официальной документации RabbitMQ.

Строка подключения к брокеру RabbitMQ

Обе команды используют, аналогично команде для баз данных USE, следующую строку подключения:

'amqp://<username>:<password>@<server>:<port>/<virtual-host>'

<username> - имя пользователя.
<password> - пароль пользователя.
<server> - адрес сервера RabbitMQ.
<port> - порт сервера RabbitMQ (по умолчанию 5672).
<virtual-host> - виртуальный хост сервера RabbitMQ (по умолчанию /).

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

Пример строки подключения к вирутальному хосту RabbitMQ по умолчанию

'amqp://guest:guest@localhost:5672/%2F'

Наверх

На заметку: для более глубокого понимания (на уровне разработчика) необходимо знать и понимать особенности работы клиента .NET для RabbitMQ, так как DaJet Script использует именно его.