Auftragsbenachrichtigungen - AWS IoT Core

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Auftragsbenachrichtigungen

Der AWS IoT Jobs-Service veröffentlicht MQTT-Nachrichten in reservierten Themen, wenn Aufträge ausstehen oder wenn sich die erste Auftragsausführung in der Liste ändert. Geräte können ausstehende Aufträge verfolgen, indem sie diese Themen abonnieren.

Auftrag-Benachrichtigungstypen

Auftragsbenachrichtigungen werden als JSON-Nutzlasten in MQTT-Themen veröffentlicht. Es gibt zwei Arten von Benachrichtigungen:

ListNotification

Eine ListNotification enthält eine Liste von höchstens 15 ausstehenden Auftragsausführungen. Sie nach Status (IN_PROGRESS-Auftragsausführungen vor QUEUED-Auftragsausführungen) und dann nach dem Zeitpunkt sortiert, an dem sie in die Warteschlange gestellt wurden.

Eine ListNotification wird veröffentlicht, sobald eines der folgenden Kriterien erfüllt ist.

  • Eine neue Auftragsausführung wird in die Warteschlange gestellt oder ändert sich in einen Nicht-Endstatus (IN_PROGRESS oder QUEUED).

  • Eine alte Auftragsausführung ändert sich in einen Endstatus (FAILED, SUCCEEDED, CANCELED, TIMED_OUT, REJECTED oder REMOVED).

Benachrichtigung auflisten (Bis zu 15 ausstehende Auftragsausführungen in QUEUED oder IN_PROGRESS)

Ohne optionale Planungskonfiguration und ohne Fenster für wiederkehrende Wartungsarbeiten

(Bis zu 10 Auftragsausführungen)

Mit optionaler Planungskonfiguration und ohne Fenster für wiederkehrende Wartungsarbeiten

(Bis zu 5 Auftragsausführungen)

Erscheint immer in der ListNotification.

Erscheint ListNotification nur während eines Wartungsfensters in der .

NextNotification

  • Eine NextNotification enthält zusammenfassende Informationen über die Auftragsausführung, die sich an der nächsten Stelle in der Warteschlange befindet.

    Eine NextNotification wird veröffentlicht, sobald sich die erste Auftragsausführung in der Liste ändert.

    • Eine neue Auftragsausführung wird der Liste als QUEUED hinzugefügt und ist die erste in der Liste.

    • Der Status einer vorhandenen Auftragsausführung, die nicht die erste in der Liste war, ändert sich von QUEUED in IN_PROGRESS und wird zur ersten in der Liste. (Dies passiert, wenn sich in der Liste keine anderen IN_PROGRESS-Auftragsausführungen befinden und wenn die Auftragsausführung, deren Status sich von QUEUED in IN_PROGRESS geändert hat, früher als jede andere IN_PROGRESS-Auftragsausführung in der Liste in die Warteschlange gestellt wurde.)

    • Der Status der Auftragsausführung, die sich an erster Stelle in der Liste befindet, ändert sich in den Endstatus und wird aus der Liste entfernt.

Für weitere Informationen zur Veröffentlichung und zum Abonnement von MQTT-Themen vgl. Gerätekommunikationsprotokolle.

Anmerkung

Benachrichtigungen sind nicht verfügbar, wenn Sie die HTTP-Signaturversion 4 oder HTTP TLS für die Kommunikation mit Aufträgen verwenden.

Ausstehender Auftrag

Der AWS IoT Jobs-Service veröffentlicht eine Nachricht zu einem MQTT-Thema, wenn ein Auftrag der Liste der ausstehenden Auftragsausführungen für ein Objekt hinzugefügt oder daraus entfernt wird oder sich die erste Auftragsausführung in der Liste ändert:

  • $aws/things/thingName/jobs/notify

  • $aws/things/thingName/jobs/notify-next

Die Nachricht enthält die folgende Beispielnutzlast:

$aws/things/thingName/jobs/notify:

{ "timestamp" : 10011, "jobs" : { "IN_PROGRESS" : [ { "jobId" : "other-job", "queuedAt" : 10003, "lastUpdatedAt" : 10009, "executionNumber" : 1, "versionNumber" : 1 } ], "QUEUED" : [ { "jobId" : "this-job", "queuedAt" : 10011, "lastUpdatedAt" : 10011, "executionNumber" : 1, "versionNumber" : 0 } ] } }

Wenn die aufgerufene Auftragsausführung this-job aus einem Auftrag stammt, für den die optionale Planungskonfiguration ausgewählt wurde und der Rollout des Auftragsdokuments während eines Wartungsfensters geplant ist, wird sie nur in einem wiederkehrenden Wartungsfenster angezeigt. Außerhalb eines Wartungsfensters this-job wird der aufgerufene Auftrag aus der Liste der ausstehenden Auftragsausführungen ausgeschlossen, wie im folgenden Beispiel gezeigt.

{ "timestamp" : 10011, "jobs" : { "IN_PROGRESS" : [ { "jobId" : "other-job", "queuedAt" : 10003, "lastUpdatedAt" : 10009, "executionNumber" : 1, "versionNumber" : 1 } ], "QUEUED" : [] } }

$aws/things/thingName/jobs/notify-next:

{ "timestamp" : 10011, "execution" : { "jobId" : "other-job", "status" : "IN_PROGRESS", "queuedAt" : 10009, "lastUpdatedAt" : 10009, "versionNumber" : 1, "executionNumber" : 1, "jobDocument" : {"c":"d"} } }

Wenn die aufgerufene Auftragsausführung other-job aus einem Auftrag stammt, für den die optionale Planungskonfiguration ausgewählt wurde und der Rollout des Auftragsdokuments während eines Wartungsfensters geplant ist, wird sie nur in einem wiederkehrenden Wartungsfenster angezeigt. Außerhalb eines Wartungsfensters wird der other-job aufgerufene Auftrag nicht als nächste Auftragsausführung aufgeführt, wie im folgenden Beispiel gezeigt.

{} //No other pending jobs
{ "timestamp" : 10011, "execution" : { "jobId" : "this-job", "queuedAt" : 10011, "lastUpdatedAt" : 10011, "executionNumber" : 1, "versionNumber" : 0, "jobDocument" : {"a":"b"} } } // "this-job" is pending next to "other-job"

Mögliche Statuswerte für die Auftragsausführungen sind QUEUED, IN_PROGRESS, FAILED, SUCCEEDED, CANCELED, TIMED_OUT, REJECTED und REMOVED.

Die folgende Reihe von Beispielen zeigt die in jedem Thema veröffentlichten Benachrichtigungen, wenn Auftragsausführungen angelegt und von einem Status in einen anderen geändert werden.

Zuerst wird ein Auftrag mit dem Namen job1 erstellt. Diese Benachrichtigung wird im jobs/notify-Thema veröffentlicht:

{ "timestamp": 1517016948, "jobs": { "QUEUED": [ { "jobId": "job1", "queuedAt": 1517016947, "lastUpdatedAt": 1517016947, "executionNumber": 1, "versionNumber": 1 } ] } }

Diese Benachrichtigung wird im jobs/notify-next-Thema veröffentlicht:

{ "timestamp": 1517016948, "execution": { "jobId": "job1", "status": "QUEUED", "queuedAt": 1517016947, "lastUpdatedAt": 1517016947, "versionNumber": 1, "executionNumber": 1, "jobDocument": { "operation": "test" } } }

Wenn ein weiterer Auftrag erstellt wird (job2), wird diese Benachrichtigung im jobs/notify-Thema veröffentlicht:

{ "timestamp": 1517017192, "jobs": { "QUEUED": [ { "jobId": "job1", "queuedAt": 1517016947, "lastUpdatedAt": 1517016947, "executionNumber": 1, "versionNumber": 1 }, { "jobId": "job2", "queuedAt": 1517017191, "lastUpdatedAt": 1517017191, "executionNumber": 1, "versionNumber": 1 } ] } }

Es wird keine Benachrichtigung im jobs/notify-next-Thema veröffentlicht, da sich der nächste Auftrag in der Warteschlange (job1) nicht geändert hat. Wenn die Ausführung von job1 beginnt, ändert sich der Status zu IN_PROGRESS. Es werden keine Benachrichtigungen veröffentlicht, da sich die Liste der Aufträge und der nächste Auftrag in der Warteschlange nicht geändert haben.

Wenn ein dritter Auftrag hinzugefügt wird (job3), wird diese Benachrichtigung im jobs/notify-Thema veröffentlicht:

{ "timestamp": 1517017906, "jobs": { "IN_PROGRESS": [ { "jobId": "job1", "queuedAt": 1517016947, "lastUpdatedAt": 1517017472, "startedAt": 1517017472, "executionNumber": 1, "versionNumber": 2 } ], "QUEUED": [ { "jobId": "job2", "queuedAt": 1517017191, "lastUpdatedAt": 1517017191, "executionNumber": 1, "versionNumber": 1 }, { "jobId": "job3", "queuedAt": 1517017905, "lastUpdatedAt": 1517017905, "executionNumber": 1, "versionNumber": 1 } ] } }

Es wird keine Benachrichtigung im jobs/notify-next-Thema veröffentlicht, da der nächste Auftrag in der Warteschlange noch job1 ist.

Wenn job1 abgeschlossen ist, ändert sich sein Status zu SUCCEEDED. Diese Benachrichtigung wird im jobs/notify-Thema veröffentlicht:

{ "timestamp": 1517186269, "jobs": { "QUEUED": [ { "jobId": "job2", "queuedAt": 1517017191, "lastUpdatedAt": 1517017191, "executionNumber": 1, "versionNumber": 1 }, { "jobId": "job3", "queuedAt": 1517017905, "lastUpdatedAt": 1517017905, "executionNumber": 1, "versionNumber": 1 } ] } }

Jetzt wurde job1 aus der Warteschlange entfernt, und die nächste auszuführenden Aufgabe ist job2. Diese Benachrichtigung wird im jobs/notify-next-Thema veröffentlicht:

{ "timestamp": 1517186269, "execution": { "jobId": "job2", "status": "QUEUED", "queuedAt": 1517017191, "lastUpdatedAt": 1517017191, "versionNumber": 1, "executionNumber": 1, "jobDocument": { "operation": "test" } } }

Wenn job3 vor der Ausführung vor job2 beginnen muss (was nicht empfehlenswert ist), kann der Status von job3 zu IN_PROGRESS geändert werden. Wenn dies geschieht, ist job2 nicht mehr der nächste Auftrag in der Warteschlange. Diese Benachrichtigung wird im jobs/notify-next-Thema veröffentlicht:

{ "timestamp": 1517186779, "execution": { "jobId": "job3", "status": "IN_PROGRESS", "queuedAt": 1517017905, "startedAt": 1517186779, "lastUpdatedAt": 1517186779, "versionNumber": 2, "executionNumber": 1, "jobDocument": { "operation": "test" } } }

Es wird keine Benachrichtigung im jobs/notify-Thema veröffentlicht, da kein Auftrag hinzugefügt oder entfernt wurde.

Wenn das Gerät job2 ablehnt und seinen Status zu REJECTED aktualisiert, wird diese Benachrichtigung im jobs/notify-Thema veröffentlicht:

{ "timestamp": 1517189392, "jobs": { "IN_PROGRESS": [ { "jobId": "job3", "queuedAt": 1517017905, "lastUpdatedAt": 1517186779, "startedAt": 1517186779, "executionNumber": 1, "versionNumber": 2 } ] } }

Wenn das Löschen von job3 (der noch ausgeführt wird) erzwungen wird, wird diese Benachrichtigung im jobs/notify-Thema veröffentlicht:

{ "timestamp": 1517189551, "jobs": {} }

An diesem Punkt ist die Warteschlange leer. Diese Benachrichtigung wird im jobs/notify-next-Thema veröffentlicht:

{ "timestamp": 1517189551 }