View a markdown version of this page

Pemberitahuan pekerjaan - AWS IoT Core

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

Pemberitahuan pekerjaan

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

Jenis pemberitahuan pekerjaan

Pemberitahuan 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 QUEUED pekerjaan sebelum eksekusi pekerjaan) dan kemudian berdasarkan waktu ketika mereka mengantri.

A ListNotification dipublikasikan setiap kali salah satu kriteria berikut terpenuhi.

  • Eksekusi pekerjaan baru diantri atau berubah ke status non-terminal (IN_PROGRESSatauQUEUED).

  • Eksekusi pekerjaan lama berubah menjadi status terminal (FAILED,SUCCEEDED,CANCELED,TIMED_OUT,REJECTED, atauREMOVED).

Untuk informasi selengkapnya tentang batas dengan dan tanpa konfigurasi penjadwalan, lihatBatas eksekusi pekerjaan.

NextNotification

  • A NextNotification berisi informasi ringkasan tentang eksekusi pekerjaan yang berikutnya dalam antrian.

    A NextNotification dipublikasikan setiap kali eksekusi pekerjaan pertama dalam daftar berubah.

    • Eksekusi pekerjaan baru ditambahkan ke daftar sebagaiQUEUED, dan itu yang pertama dalam daftar.

    • Status eksekusi pekerjaan yang ada yang bukan yang pertama dalam daftar berubah dari QUEUED menjadiIN_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 menjadi IN_PROGRESS diantri lebih awal daripada eksekusi IN_PROGRESS pekerjaan lain dalam daftar.)

    • Status eksekusi pekerjaan yang pertama dalam daftar berubah menjadi status terminal dan dihapus dari daftar.

Untuk informasi lebih lanjut tentang menerbitkan dan berlangganan topik MQTT, lihat. Protokol komunikasi perangkat

catatan

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

Pekerjaan tertunda

Layanan AWS IoT Jobs menerbitkan pesan pada topik MQTT ketika pekerjaan ditambahkan ke 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 di this-job panggil 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 dikecualikan 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 di other-job panggil 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 dipang other-job gil 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 QUEUEDIN_PROGRESS,FAILED,SUCCEEDED,CANCELED,TIMED_OUT,REJECTED, danREMOVED.

Serangkaian contoh berikut menunjukkan notifikasi yang dipublikasikan untuk setiap topik saat eksekusi pekerjaan dibuat dan diubah dari satu status ke status lainnya.

Pertama, satu pekerjaan, yang disebutjob1, 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 } ] } }

Pemberitahuan tidak dipublikasikan ke jobs/notify-next topik karena pekerjaan berikutnya dalam antrean (job1) tidak berubah. Ketika job1 mulai dieksekusi, statusnya berubah menjadiIN_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 adajob1.

Setelah job1 selesai, statusnya berubah menjadiSUCCEEDED, 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 adalahjob2. 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 menjadiIN_PROGRESS. Jika ini terjadi, job2 tidak lagi berikutnya dalam antrian, dan pemberitahuan ini dipublikasikan 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 keREJECTED, 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 }