Documentation for Intellect 4.11.0-4.11.3. Documentation for other versions of Intellect is available too.

Previous page Configuring the Video capture device object for integration with Axxon Next via ONVIF  Intellect software Integration Guide. Postscript Next page


Intellect can act as receiver and transmitter of RabbitMQ events. Download and install the following components from the https://www.rabbitmq.com/install-windows.html website before using this functionality:

  1. Rabbit service
  2. Erlang

By default, RabbitMQ has a built-in guest/guest account that only works with localhost. Create a new account to use RabbitMQ remotely.

The examples below mention the amqp_sendstring.exe and amqp_listen.exe utilities. These utilities for processing and sending messages from the Intellect are to be implemented by programmer.

The connection to RabbitMQ is configured as follows:

  1. Go to the RabbitMQ tab on the Security zone object settings panel on the Programming tab of the System settings dialog box (1).
  2. In the Host field, enter the name or address of the RabbitMQ host (2).
  3. In the Port field, enter the port to connect with the RabbitMQ host (3). If the port is 0 or not set (by default), the RabbitMQ client does not run.
  4. In the User field, enter the RabbitMQ user name (4).
  5. In the Password field, enter the RabbitMQ user password (5).
  6. From the Content-type drop-down list, select the data type to be sent and received by Intellect (6):
    1. application/jsona message is sent and received in JSON format. If Intellect cannot parse the message in JSON format, an attempt is made to recognize the message in plain/text format.

    2. plain/textthe Intellect event is sent and received in the format "TYPE|ID|EVENT"

  7. Click Apply (7).

Intellect provider and third party receiver

Intellect provider operates in amq.topic mode, and the receiver operates in amq.direct mode.

amq.topic allows for subscriptions ranging. Each event sent from Intellect is signed with a special header, which is built according to the following scheme:

routingkey = "intellect.event." + msg.GetSourceType() +"." + msg.GetSourceId() + "." + msg.GetAction();

So the receiver can subscribe to any event(s).

Example.

Subscription to all events:

amqp_listen.exe localhost 5672 amq.topic intellect.event.# 

Subscription to Action==”RUN” events

amqp_listen.exe localhost 5672 amq.topic intellect.event.*.*.RUN

Important!

Events enter the RabbitMQ queue from each Intellect core individually. For example, if there are two cores in the system, and the event occurred on a core that has incorrect settings or does not have a connection to RabbitMQ, the event will not get into the queue, despite the fact that the second core will receive it. Each core sends only its own messages.

Intellect core receiver

The receiver is implemented according to the amq.direct scheme. It is subscribed to all events with the "bindingkey" key. bindingkey should have the following format: "intellect." + ComputerName (case sensitive).

When sending, the bindingkey must be specified exactly as it is registered at the receiver, otherwise the message will not be delivered.

Example events that will be receiver by Intellect core:

text:

amqp_sendstring.exe localhost 5672 amq.direct intellect.ASUS "CAM|1|HELLO"

or JSON

amqp_sendstring.exe localhost 5672  amq.direct intellect.ASUS {\"Type\":\"MACRO\",\"Id\":\"1\",\"Action\":\"RUN\",\"Params\":{\"test1\":\"+++\",\"test2\":\"000\"}}
  • No labels