You are viewing an old version of this page. View the current version.

Compare with Current View Page History

Version 1 Next »

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

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

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

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

  1. Перейти на вкладку RabbitMQ на панели настройки Объект охраны на вкладке Программирование диалогового окна Настройка системы (1).
  2. В поле Хост ввести имя или адрес хоста RabbitMQ (2).
  3. В поле Порт ввести порт для подключения к хосту RabbitMQ (3).
  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