イントロダクション
HTTP 通知とは別に、Orion は MQTT を使用して通知できます。この場合、MQTT メッセージは、通知がトリガーされるたびに サブスクリプション時に指定された特定の MQTT broker で公開されます。

ドキュメントのこのセクション およびNGSIv2 仕様
で説明されているように、運用の観点からは、MQTT サブスクリプションは HTTP サブスクリプションに似ています (たとえば、通知ペイロードは同じです。
有効期限やフィルタリング式などを設定できます) が、notification オブジェクトで http の代わりに mqtt を使用します。
...
"notification": {
"mqtt": {
"url": "mqtt://<mqtt_host>:1883",
"topic": "sub1"
}
}
...
次の要素は mqtt 内で使用できます:
- 使用する MQTT broker エンドポイントを指定するための
url。URL はmqtt://で始まる必要があり、 パスを含めることはできません (つまり、ホストとポートのみが含まれます) topicに、使用する MQTT トピックを指定しますqos: サブスクリプションに関連付けられた通知 (0, 1 または 2) で使用する MQTTQoS 値を指定します。 これはオプションのフィールドです。省略した場合、QoS0 が使用されます
カスタム通知
MQTT サブスクリプションのカスタム通知 (NGSIv2 仕様 で説明) は、 次の点を考慮して、HTTP サブスクリプションと同じように機能します
httpCustomの代わりにmqttCustomが使用されますheadersとqsは MQTT で同等ではないため、使用できません- マクロ置換は
topicおよびpayloadフィールドで実行されます。urlとqosは固定値です
接続管理
サブスクリプションに関連付けられた MQTT broker のエンドポイントは、サブスクリプション時に url フィールドで指定されますが、
MQTT 通知が最初に公開されたときに接続が行われます。
接続が一度確立されると、使用中も開いたままになります。つまり、MQTT 通知が公開されます。接続が使用されていない場合 (つまり、
MQTT が公開されていない場合)、Orion は事前定義されたキープ・アライブ時間 (-mqttMaxAge CLI パラメータ
で指定、デフォルトで1時間) 後に接続を閉じます。
MQTT チートシート
次のコマンドは、MQTT 通知 (mosquitto_sub および mosquito_pub を使用) をテストおよびデバッグするのに役立ちます。
QoS2 でサブスクライブするには:
mosquitto_sub --disable-clean-session --id 1 -q 2 -d -h <host> -p 1883 -t '#'
共有サブスクリプションを作成するには (クラスター名 "g1")
mosquitto_sub -h <host> -p 1883 -t '$share/g1/#'
TLS を使用して公開するには (Orion ではまだサポートされていません。 この Issue で保留中です):
mosquitto_pub -d --insecure --cafile file.pem -h <host> -p 1883 -u <username> -P <password> -t '/topic' -m 'payload'