ПК Интеллект может выступать в роли приемника и передатчика событий RabbitMQ. Для использования данной функциональности необходимо предварительно загрузить с веб-сайта https://www.rabbitmq.com/install-windows.html и установить следующие компоненты:

  1. Rabbit-сервис
  2. Erlang

По умолчанию RabbitMQ имеет встроенную учетную запись guest/guest, которая работает только с хостом localhost. Если требуется использовать RabbitMQ удаленно, необходимо завести новую учетную запись.

В примерах ниже упоминаются утилиты amqp_sendstring.exe и amqp_listen.exe. Данные утилиты для обработки и отправки сообщений ПК Интеллект программисту необходимо реализовать самостоятельно.

Настройка подключения к RabbitMQ осуществляется следующим образом:

  1. Перейти на вкладку RabbitMQ на панели настройки Объект охраны на вкладке Программирование диалогового окна Настройка системы (1).
  2. В поле Хост ввести имя или адрес хоста RabbitMQ (2).
  3. В поле Порт ввести порт для подключения к хосту RabbitMQ (3). Если порт не задан (по умолчанию) или равен 0, то клиент RabbitMQ не запускается.
  4. В поле Пользователь ввести имя пользователя хоста RabbitMQ (4).
  5. В поле Пароль ввести пароль пользователя хоста RabbitMQ (5).
  6. Из раскрывающегося списка Тип содерж. выбрать тип данных, отправляемых и принимаемых ПК Интеллект (6):
    1. application/json – отправляется и принимается сообщение в формате JSON. Если ПК Интеллект не может разобрать сообщение в формате JSON, то предпринимается попытка распознать сообщение в формате plain/text.

    2. plain/text – отправляется и принимается событие ПК Интеллект в формате "ТИП|ИДЕНТИФИКАТОР|СОБЫТИЕ"

  7. Нажать на кнопку Применить (7).

Поставщик ПК Интеллект и сторонний приемник

Поставщик ПК Интеллект работает в режиме «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\"}}


  • No labels