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 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

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_PROGRESSatau). QUEUED

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

Pemberitahuan Daftar (Hingga 15 eksekusi pekerjaan yang tertunda di QUEUED atauIN_PROGRESS)

Tanpa Konfigurasi Penjadwalan Opsional dan Jendela Pemeliharaan Berulang

(Hingga 10 eksekusi pekerjaan)

Dengan Konfigurasi Penjadwalan Opsional dan Jendela Pemeliharaan Berulang

(Hingga 5 eksekusi pekerjaan)

Selalu muncul di ListNotification.

Hanya muncul di ListNotification selama jendela pemeliharaan.

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 sebagaiQUEUED, dan itu yang pertama dalam daftar.

    • Status eksekusi pekerjaan yang ada yang bukan yang pertama dalam daftar berubah dari QUEUED keIN_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

catatan

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

Job tertunda

Layanan AWS IoT Pekerjaan menerbitkan 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 QUEUEDIN_PROGRESS,FAILED,SUCCEEDED,CANCELED,TIMED_OUT,REJECTED, danREMOVED.

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, 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 } ] } }

Notifikasi tidak dipublikasikan ke jobs/notify-next topik karena pekerjaan berikutnya dalam antrian (job1) tidak berubah. Ketika job1 mulai mengeksekusi, 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 masihjob1.

Ketika 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 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 statusnyaREJECTED, 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 }