Перейти в хранилище документации
Обратиться в техническую поддержку
ПК Интеллект может выступать в роли приемника и передатчика событий RabbitMQ. Для использования данной функциональности необходимо предварительно загрузить с веб-сайта https://www.rabbitmq.com/install-windows.html и установить следующие компоненты:
По умолчанию RabbitMQ имеет встроенную учетную запись guest/guest, которая работает только с хостом localhost. Если требуется использовать RabbitMQ удаленно, необходимо завести новую учетную запись.
В примерах ниже упоминаются утилиты amqp_sendstring.exe и amqp_listen.exe. Данные утилиты для обработки и отправки сообщений ПК Интеллект программисту необходимо реализовать самостоятельно.
Настройка подключения к RabbitMQ осуществляется следующим образом:
application/json – отправляется и принимается сообщение в формате JSON. Если ПК Интеллект не может разобрать сообщение в формате JSON, то предпринимается попытка распознать сообщение в формате plain/text.
plain/text – отправляется и принимается событие ПК Интеллект в формате "ТИП|ИДЕНТИФИКАТОР|СОБЫТИЕ"
Поставщик ПК Интеллект работает в режиме «amq.topic», а приемник – в режиме “amq.direct”.
amq.topic позволяет ранжировать подписки. Каждое событие, отправляемое из ПК Интеллект, подписывается специальным заголовком, который строится по следующей схеме:
routingkey = "intellect.event." + msg.GetSourceType() +"." + msg.GetSourceId() + "." + msg.GetAction();
Таким образом, приемник может гибко подписаться на необходимые события.
Пример.
Подписка на все события:
amqp_listen.exe localhost 5672 amq.topic intellect.event.#
Подписка только на события с Action==”RUN”
amqp_listen.exe localhost 5672 amq.topic intellect.event.*.*.RUN
Внимание!
События поступают в очередь RabbitMQ от каждого ядра индивидуально. Например, если в системе два ядра, и событие произошло на ядре, у которого неправильные настройки или нет подключения к RabbitMQ, событие не попадет в очередь, несмотря на то, что второе ядро его получит. Каждое ядро отправляет только свои сообщения.
Приемник реализован по схеме amq.direct. Это означает, что он подписан на все события с ключом "bindingkey". bindingkey реализован по схеме "intellect." + ComputerName (чувствителен к регистру).
При отправке bindingkey должен быть указан в точности как у приемника, иначе сообщение не дойдет.
Таким образом, чтобы ядро получило событие, необходимо отправить следующее сообщение:
текстовое
amqp_sendstring.exe localhost 5672 amq.direct intellect.ASUS "CAM|1|HELLO"
или JSON
amqp_sendstring.exe localhost 5672 amq.direct intellect.ASUS {\"Type\":\"MACRO\",\"Id\":\"1\",\"Action\":\"RUN\",\"Params\":{\"test1\":\"+++\",\"test2\":\"000\"}}