

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Pemberitahuan pekerjaan
<a name="jobs-comm-notifications"></a>

Layanan AWS IoT Pekerjaan menerbitkan pesan MQTT ke topik yang dipesan saat lowongan tertunda atau saat eksekusi pekerjaan pertama dalam daftar berubah. Perangkat dapat melacak pekerjaan yang tertunda dengan berlangganan topik ini.

## Jenis pemberitahuan Job
<a name="jobs-comm-notifications-types"></a>

Notifikasi pekerjaan dipublikasikan ke topik MQTT sebagai muatan JSON. Ada dua jenis notifikasi:

**ListNotification**

A `ListNotification` berisi daftar tidak lebih dari 15 eksekusi pekerjaan yang tertunda. Mereka diurutkan berdasarkan status (eksekusi `IN_PROGRESS` pekerjaan sebelum eksekusi `QUEUED` pekerjaan) dan kemudian pada saat mereka antri.

A `ListNotification` diterbitkan setiap kali salah satu kriteria berikut terpenuhi.
+ Eksekusi pekerjaan baru diantrian atau diubah ke status non-terminal (`IN_PROGRESS`atau). `QUEUED`
+ Eksekusi pekerjaan lama berubah menjadi status terminal (`FAILED`,`SUCCEEDED`,`CANCELED`,`TIMED_OUT`,`REJECTED`, atau`REMOVED`).

Untuk informasi selengkapnya tentang batasan dengan dan tanpa konfigurasi penjadwalan, lihat[Batas eksekusi Job](job-limits.md#job-execution-limits).

**NextNotification**
+ A `NextNotification` berisi informasi ringkasan tentang eksekusi pekerjaan yang berikutnya dalam antrian.

  A `NextNotification` diterbitkan setiap kali eksekusi pekerjaan pertama dalam daftar berubah.
  + Eksekusi pekerjaan baru ditambahkan ke daftar sebagai`QUEUED`, dan itu yang pertama dalam daftar.
  + Status eksekusi pekerjaan yang ada yang bukan yang pertama dalam daftar berubah dari `QUEUED` ke`IN_PROGRESS`, dan menjadi yang pertama dalam daftar. (Ini terjadi ketika tidak ada eksekusi `IN_PROGRESS` pekerjaan lain dalam daftar atau ketika eksekusi pekerjaan yang statusnya berubah dari `QUEUED` ke `IN_PROGRESS` antri lebih awal dari eksekusi `IN_PROGRESS` pekerjaan lainnya dalam daftar.) 
  + Status eksekusi pekerjaan yang pertama dalam daftar berubah menjadi status terminal dan dihapus dari daftar.

Untuk informasi selengkapnya tentang menerbitkan dan berlangganan topik MQTT, lihat. [Protokol komunikasi perangkat](protocols.md)

**catatan**  
Pemberitahuan tidak tersedia saat Anda menggunakan Tanda Tangan HTTP Versi 4 atau HTTP TLS untuk berkomunikasi dengan pekerjaan.

## Job tertunda
<a name="jobs-comm-pending"></a>

Layanan AWS IoT Pekerjaan memublikasikan pesan tentang topik MQTT saat pekerjaan ditambahkan atau dihapus dari daftar eksekusi pekerjaan yang tertunda untuk suatu hal atau eksekusi pekerjaan pertama dalam daftar berubah:
+ `$aws/things/thingName/jobs/notify`
+ `$aws/things/thingName/jobs/notify-next`

Pesan berisi contoh payload berikut:

`$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
    } ]
  }
}
```

Jika eksekusi pekerjaan yang dipanggil `this-job` berasal dari pekerjaan dengan konfigurasi penjadwalan opsional yang dipilih dan peluncuran dokumen pekerjaan dijadwalkan berlangsung selama jendela pemeliharaan, itu hanya akan muncul selama jendela pemeliharaan berulang. Di luar jendela pemeliharaan, pekerjaan yang dipanggil `this-job` akan dikeluarkan dari daftar eksekusi pekerjaan yang tertunda seperti yang ditunjukkan pada contoh berikut.

```
{
  "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"}
  }
}
```

Jika eksekusi pekerjaan yang dipanggil `other-job` berasal dari pekerjaan dengan konfigurasi penjadwalan opsional yang dipilih dan peluncuran dokumen pekerjaan dijadwalkan berlangsung selama jendela pemeliharaan, itu hanya akan muncul selama jendela pemeliharaan berulang. Di luar jendela pemeliharaan, pekerjaan yang dipanggil `other-job` tidak akan terdaftar sebagai eksekusi pekerjaan berikutnya seperti yang ditunjukkan pada contoh berikut.

```
{} //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"
```

Nilai status eksekusi pekerjaan yang mungkin adalah `QUEUED``IN_PROGRESS`,`FAILED`,`SUCCEEDED`,`CANCELED`,`TIMED_OUT`,`REJECTED`, dan`REMOVED`.

Rangkaian contoh berikut menunjukkan pemberitahuan yang dipublikasikan untuk setiap topik saat eksekusi pekerjaan dibuat dan diubah dari satu status ke negara bagian lainnya. 

Pertama, satu pekerjaan, disebut`job1`, dibuat. Pemberitahuan ini dipublikasikan ke `jobs/notify` topik:

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

Pemberitahuan ini dipublikasikan ke `jobs/notify-next` topik:

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

Ketika pekerjaan lain dibuat (`job2`), pemberitahuan ini dipublikasikan ke `jobs/notify` topik:

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

Notifikasi tidak dipublikasikan ke `jobs/notify-next` topik karena pekerjaan berikutnya dalam antrian (`job1`) tidak berubah. Ketika `job1` mulai mengeksekusi, statusnya berubah menjadi`IN_PROGRESS`. Tidak ada pemberitahuan yang dipublikasikan karena daftar pekerjaan dan pekerjaan berikutnya dalam antrian tidak berubah.

Ketika job ketiga (`job3`) ditambahkan, pemberitahuan ini dipublikasikan ke `jobs/notify` topik:

```
{
  "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
      }
    ]
  }
}
```

Pemberitahuan tidak dipublikasikan ke `jobs/notify-next` topik karena pekerjaan berikutnya dalam antrian masih`job1`.

Ketika `job1` selesai, statusnya berubah menjadi`SUCCEEDED`, dan pemberitahuan ini dipublikasikan ke `jobs/notify` topik:

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

Pada titik ini, `job1` telah dihapus dari antrian, dan pekerjaan berikutnya yang akan dieksekusi adalah`job2`. Pemberitahuan ini dipublikasikan ke `jobs/notify-next` topik:

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

Jika `job3` harus mulai mengeksekusi sebelumnya `job2` (yang tidak disarankan), status `job3` dapat diubah menjadi`IN_PROGRESS`. Jika ini terjadi, `job2` tidak lagi berikutnya dalam antrian, dan pemberitahuan ini diterbitkan ke `jobs/notify-next` topik:

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

Tidak ada pemberitahuan yang dipublikasikan ke `jobs/notify` topik karena tidak ada pekerjaan yang ditambahkan atau dihapus.

Jika perangkat menolak `job2` dan memperbarui statusnya`REJECTED`, pemberitahuan ini dipublikasikan ke `jobs/notify` topik:

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

Jika `job3` (yang masih dalam proses) dihapus paksa, pemberitahuan ini dipublikasikan ke `jobs/notify` topik:

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

Pada titik ini, antrian kosong. Pemberitahuan ini dipublikasikan ke `jobs/notify-next` topik:

```
{
  "timestamp": 1517189551
}
```