

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
<a name="jobs-comm-notifications"></a>

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

## Auftrag-Benachrichtigungstypen
<a name="jobs-comm-notifications-types"></a>

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`).

Weitere Hinweise zu den Grenzwerten mit und ohne Zeitplankonfiguration finden Sie unter[Grenzwerte für die Ausführung von Job](job-limits.md#job-execution-limits).

**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](protocols.md).

**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
<a name="jobs-comm-pending"></a>

Der AWS IoT Jobs-Service veröffentlicht eine Nachricht zu einem MQTT-Thema, wenn ein Job zur Liste der ausstehenden Jobausführungen für eine Sache hinzugefügt oder daraus entfernt wird oder wenn sich die erste Jobausfü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
}
```