MQTT Topics

MQTT topics are used to route messages among clients within the architecture. Publishers direct messages to a particular topic, and all clients that have subscribed to the topic will receive the message. Clients can act simultaneously as both publishers and subscribers. Clients are free to subscribe to any topic in the architecture, but to accomplish determinism, publishers are required to publish to a topic structure as follows:

Asset/{assetId}/{dataItemId}
Where,

Asset = a reserved word.
assetId = the Asset Id of the client publishing the message.
dataItemId = the dataItemId that is contained in the message and provides additional context.
/ = topic level separator
{} = notation characters and are not used in the topic definition

This topic pattern works well with MQTT wildcarding to provide a subscriber with the data desired. Here are a few examples:

Subscribe to the messages of a particular dataItemId type for a single assetId:
Asset/{assetId}/{dataItemId}
Example: Asset/A1000/ItemWorkComplete

Receive all messages for an assetId.
Asset/{assetId}/#
Example: Asset/A1000/#

Receive all the messages of particular a dataItemId type for all assetIds:
Asset/+/{dataItemId}
Example: Asset/+/ItemWorkComplete

Receive all messages for all assets:
Asset/+/{dataItemId}
Example: Asset/+/ItemWorkComplete

(Please use with care because you’ll receive ALL the messages from all the assets.)

Additional information about message parameters can be found on the Message page.