Send or Process Telemetry Data
Telemetry data is published to the ase.exchange.telemetry exchange which is a headers exchange.
See Exchange ase.exchange.telemetry for details on the AMQP user to use and the messages sent.
Queues can be bound for specific types of messages. Services can pick up "raw"
messages, process them and publish them to the
ase.exchange.telemetry
exchange with a new
publishTag
label.
- Export MQTT telemetry processing (can process any
publishTag
) - Support label telemetry processing (processes "raw"
publishTag
, publishes messages back to the exchange using the "label"publishTag
header) - Meta processing of Thing properties (processes "raw"
publishTag
)
Both the "publishTag"
and "thingID"
headers are
required.
Publish Raw Telemetry Data
User: telemetry-user
Raw telemetry messages coming from device drivers need to be published with the following headers:
headers["publishTag"] = "raw"
headers["thingID"] = "{thing-id}"
headers["messageType"] = "{message-type}"
amqp.PublishAMQP("telemetry", "ase.exchange.telemetry", "", body, headers, "", "")
messageType
can be sent either as a header or in the message
body. The one in the message body takes precedence.Subscribe to Telemetry Data
User: support-user
This user is allowed to create queues with the
"ase.queue.telemetry-support-"
prefix, bind these
"ase.queue.telemetry-support-"
prefixed queues to the
"ase.exchange.telemetry"
exchange and consume messages from
these "ase.queue.telemetry-support-"
prefixed queues.
- Create a unique queue with the
"ase.queue.telemetry-support-"
prefix and a random (alphanumeric) suffix - Bind this queue to the
"ase.exchange.telemetry"
headers exchange using:- x-match=all
- publishTag=raw
- thingID=<thing-id>
- Bind for each Thing you are interested in processing telemetry for
- Consume incoming telemetry messages
Publish Processed Telemetry Data
User: telemetry-user
Make sure to use a custom publishTag header:
headers["publishTag"] = "{custom-tag}"
headers["thingID"] = "{thing-id}"
headers["messageType"] = "{message-type}"
amqp.PublishAMQP("telemetry", "ase.exchange.telemetry", "", body, headers, "", "")
messageType
can be sent either as a header or in the message
body. The one in the message body takes precedence.