PubSubspecdraftimplproposal
Veröffentlichen von Objektänderungen über einen MQTT-Broker
Umfang
Dieser Baustein veröffentlicht Nachrichten über Feature-Änderungen über MQTT-Broker.
Der Baustein spezifiziert einen oder mehrere Broker (Option: brokers
), die eindeutige Publisher-Kennung in den Brokern (Option: publisher
) und eine oder mehrere Arten von Publikationen (Option: publications
).
Veröffentlichungen
Die Themenbezeichner folgen dem Muster ogcapi/{publisherId}/{apiId}/collections/{collectionId}/{subPath}
, wobei publisherId
der Wert der Konfigurationsoption publisher
ist, apiId
der Bezeichner der API und collectionId
der Bezeichner der Collection des neuen, geänderten oder gelöschten Features ist. subPath
hängt von der Art der Veröffentlichung ab. Es werden zwei Typen von Veröffentlichungen unterstützt.
Alle Veröffentlichungstypen unterstützen die folgenden Konfigurationsoptionen:
broker
: der Identifikator des Brokers, an den die Publikationsnachrichten gesendet werden;mqttQos
: der MQTT QoS-Wert für die Nachrichten,AT_MOST_ONCE
(Standard),AT_LEAST_ONCE
, oderEXACTLY_ONCE
;retain
: Schalter, ob der Broker die Nachricht aufbewahren soll (Voreinstellung: `false);timeout
: der Timeout in Sekunden (Standardwert: 60).
Veröffentlichungstyp: Einzelnes Thema für alle Feature-Änderungen in einer Collection
Für diese Veröffentlichungen ist items
der Wert vonsubPath
. Die Nachricht ist ein GeoJSON Feature mit drei zusätzlichen Eigenschaften:
$id
: eine UUID für die Veröffentlichung;$pubtime
: der Zeitstempel, wann die Publikation erstellt wurde;$operation
: Einer der Wertecreate
,update
, oderdelete
.
Im Falle von create
oder update
enthält das Feature die id, die Geometrie und die Feature-Eigenschaften. Bei delete
ist nur die ID enthalten.
Siehe die Veröffentlichung items
im Beispiel.
Veröffentlichungstyp: Ein oder mehrere Themen für Änderungen an einer Feature-Eigenschaft.
Für diese Veröffentlichungen darf subPath
nicht items
sein. Der subPath
kann mehrere Pfadelemente enthalten und ein Pfadelement kann ein Parameter in geschweiften Klammern sein.
Die Konfigurationsoption parameters
in der Veröffentlichung bildet diese Parameter auf Feature-Eigenschaften ab. Die Werte der Eigenschaften in der Instanz werden verwendet, um das Thema zu konstruieren. Dies ermöglicht z.B. die Veröffentlichung von Messungen nach Stationen, wenn einer der Parameter eine Stationskennung ist.
Die Konfigurationsoption property
identifiziert die Eigenschaft, deren Wert in der Veröffentlichungsnachricht gesendet wird. Dies kann z.B. der Wert einer Messung sein.
Siehe die Veröffentlichung {wigos_station_identifier}/{observed_property}
im Beispiel.
Limitierungen
Bei diesem Baustein handelt es sich um eine erste Version, die im Rahmen von OGC Testbed 19 entwickelt wurde. Weitere Entwicklungen und Tests sind erforderlich, um sicherzustellen, dass der Baustein eine ausreichende Anzahl von Anwendungsfällen unterstützt.
Derzeit wird nur MQTT 3.1.1 unterstützt.
Konformitätsklassen
OGC beginnt mit der Arbeit an einem Standard, der eine Publish/Subscribe-Funktionalität für Ressourcen ermöglicht, die von OGC API Standards unterstützt werden. Die Arbeiten befinden sich in einem frühen Stadium.
Die ereignisgesteuerte API wird mit AsyncAPI 2.6 beschrieben und ergänzt die OpenAPI-Definition (von Nutzern initiierte API-Anfragen).
Konfiguration
Optionen
Name | Default | Beschreibung | Typ | Seit |
---|---|---|---|---|
buildingBlock | Immer PUB_SUB . | string | v2.0 | |
enabled | false | Soll der Baustein aktiviert werden? | boolean | v2.0 |
brokers | {} | Ein Verzeichnis der MQTT-Broker, mit denen eine Verbindung hergestellt werden soll. Der Schlüssel ist eine ID des Brokers. Der Wert ist ein Broker-Objekt mit den folgenden Eigenschaften: host (der Hostname des Brokers), port (der zu verwendende Port, Standard ist 1883), ssl (ob SSL verwendet werden soll, Standard ist true , wenn der Port 8883 ist, sonst false ), username und password (optionale Anmeldedaten, falls vom Broker benötigt). | object | v2.0 |
publisher | ldproxy | Der eindeutige Bezeichner, der im Broker verwendet werden soll. Da der Wert im Broker eindeutig sein muss, sollte der Wert explizit in der Konfiguration festgelegt werden. | string | v2.0 |
publications | {} | Siehe Veröffentlichungen | object | v2.0 |
Beispiele
- buildingBlock: PUB_SUB
enabled: true
brokers:
t19:
host: t19.ldproxy.net
port: 8883
publisher: ${PUBLISHER:-t19.ldproxy.net}
publications:
items:
broker: t19
mqttQos: AT_MOST_ONCE
'{wigos_station_identifier}/{observed_property}':
parameters:
wigos_station_identifier: wigos_station_identifier
observed_property: name
property: value
broker: t19
mqttQos: AT_MOST_ONCE
retain: true