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 использует именно его.