PubSub

specdraftimplproposal

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, oder EXACTLY_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 Werte create, update, oder delete.

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 Standardsopen in new window unterstützt werden. Die Arbeiten befinden sich in einem frühen Stadium.

Die ereignisgesteuerte API wird mit AsyncAPI 2.6open in new window beschrieben und ergänzt die OpenAPI-Definition (von Nutzern initiierte API-Anfragen).

Konfiguration

Optionen

NameDefaultBeschreibungTypSeit
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
{}
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