Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Notifications Jobs
Le service AWS IoT Jobs publie des messages MQTT sur des sujets réservés lorsque des tâches sont en attente ou lorsque la première exécution de tâche de la liste change. Les appareils peuvent suivre les tâches en attente en s’abonnant à ces rubriques.
Type de notification de tâche.
Les notifications de tâche sont publiées dans les rubriques MQTT en tant que charges utilises JSON. Il existe deux types de notifications :
ListNotification
Une ListNotification
contient la liste de 15 exécutions de tâche en attente au plus. Elles sont triées par statut (les exécutions de tâche IN_PROGRESS
précèdent les exécutions de tâche QUEUED
), puis selon le moment auquel elles ont été mises en file d'attente.
Une ListNotification
est publiée chaque fois que l'une des conditions ci-dessous est remplie.
-
Une nouvelle exécution de tâche est mise en file d'attente ou passe à un statut qui n'est pas final (
IN_PROGRESS
ouQUEUED
). -
Une ancienne exécution d'état acquiert le statut final (
FAILED
,SUCCEEDED
,CANCELED
,TIMED_OUT
,REJECTED
ouREMOVED
).
Notification de liste (jusqu’à 15 exécutions de tâches en attente dans QUEUED ouIN_PROGRESS ) |
|
---|---|
Sans configuration de planification optionnelle ni fenêtre de maintenance récurrente (Jusqu’à 10 exécutions de tâches) |
Avec configuration de planification optionnelle et fenêtre de maintenance récurrente (Jusqu’à 5 exécutions de tâches) |
Apparaît toujours dans le ListNotification. |
N'apparaît que ListNotification pendant une fenêtre de maintenance. |
NextNotification
-
Une
NextNotification
contient le résumé d’informations de l’exécution de tâche suivante dans la file d’attente.Une
NextNotification
est publiée chaque fois que la première exécution de tâche de la liste change.-
Une nouvelle exécution de tâche est ajoutée à la liste au statut
QUEUED
et constitue le premier élément de la liste. -
Le statut d’une exécution de tâche existante qui n’était pas le premier élément de la liste passe de
QUEUED
àIN_PROGRESS
et devient le premier élément de la liste. (Cette situation se produit lorsque la liste ne contient aucune autre exécution de tâcheIN_PROGRESS
ou que l'exécution de tâche dont le statut passe deQUEUED
àIN_PROGRESS
a été mise en file d'attente avant toutes les exécutions de tâcheIN_PROGRESS
de la liste.) -
Le statut de l'exécution de tâche qui est la première de la liste passe au statut final et est supprimée de la liste.
-
Pour plus d'informations sur la publication et l'abonnement aux rubriques MQTT, consultez Protocoles de communication des appareils.
Note
Les notifications ne sont pas disponibles lorsque vous utilisez HTTP Signature Version 4 ou HTTP TLS pour communiquer avec les tâches.
Tâche en attente
Le service AWS IoT Jobs publie un message sur un sujet MQTT lorsqu'une tâche est ajoutée ou supprimée de la liste des tâches en attente pour un objet ou lorsque la première exécution de tâche de la liste change :
-
$aws/things/
thingName
/jobs/notify -
$aws/things/
thingName
/jobs/notify-next
Les messages contiennent les exemples de charge utile suivants :
$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 } ] } }
Si l’exécution de la tâche appelée this-job
provient d’une tâche pour laquelle la configuration de planification facultative est sélectionnée et que le déploiement du document de tâche est prévu pour avoir lieu pendant une fenêtre de maintenance, il n’apparaîtra que pendant une fenêtre de maintenance récurrente. En dehors d’une fenêtre de maintenance, la tâche appelée this-job
sera exclue de la liste des exécutions de tâches en attente, comme indiqué dans l’exemple suivant.
{ "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"} } }
Si l’exécution de la tâche appelée other-job
provient d’une tâche pour laquelle la configuration de planification facultative est sélectionnée et que le déploiement du document de tâche est prévu pour avoir lieu pendant une fenêtre de maintenance, il n’apparaîtra que pendant une fenêtre de maintenance récurrente. En dehors d’une fenêtre de maintenance, la tâche appelée other-job
ne sera pas répertoriée comme la prochaine exécution de la tâche, comme indiqué dans l’exemple suivant.
{} //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"
Les valeurs possibles d'état d'exécution de tâche sont QUEUED
, IN_PROGRESS
, FAILED
, SUCCEEDED
, CANCELED
, TIMED_OUT
, REJECTED
et REMOVED
.
La série d’exemples suivante montre les notifications publiées pour chaque rubrique lorsque des exécutions de tâches sont créées et passent d’un état à un autre.
D'abord, une tâche appelée job1
est créée. Cette notification est publiée dans la rubrique jobs/notify
:
{ "timestamp": 1517016948, "jobs": { "QUEUED": [ { "jobId": "job1", "queuedAt": 1517016947, "lastUpdatedAt": 1517016947, "executionNumber": 1, "versionNumber": 1 } ] } }
Cette notification est publiée dans la rubrique jobs/notify-next
:
{ "timestamp": 1517016948, "execution": { "jobId": "job1", "status": "QUEUED", "queuedAt": 1517016947, "lastUpdatedAt": 1517016947, "versionNumber": 1, "executionNumber": 1, "jobDocument": { "operation": "test" } } }
Lorsqu'une autre tâche (job2
) est créée, cette notification est publiée dans la rubrique jobs/notify
:
{ "timestamp": 1517017192, "jobs": { "QUEUED": [ { "jobId": "job1", "queuedAt": 1517016947, "lastUpdatedAt": 1517016947, "executionNumber": 1, "versionNumber": 1 }, { "jobId": "job2", "queuedAt": 1517017191, "lastUpdatedAt": 1517017191, "executionNumber": 1, "versionNumber": 1 } ] } }
Aucune notification n'est pas publiée dans la rubrique jobs/notify-next
, car la tâche suivante de la file d'attente (job1
) n'a pas changé. Lorsque job1
commence à s'exécuter, son statut devient IN_PROGRESS
. Aucune notification n'est publiée, car la liste des tâches et la tâche suivante dans la file d'attente n'ont pas changé.
Lorsqu'une troisième tâche (job3
) est ajoutée, cette notification est publiée dans la rubrique jobs/notify
:
{ "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 } ] } }
Aucune notification n'est publiée dans la rubrique jobs/notify-next
, car la tâche suivante de la file d'attente est toujours job1
.
Une fois la tâche job1
terminée, son statut passe à SUCCEEDED
et cette notification est publiée dans la rubrique jobs/notify
:
{ "timestamp": 1517186269, "jobs": { "QUEUED": [ { "jobId": "job2", "queuedAt": 1517017191, "lastUpdatedAt": 1517017191, "executionNumber": 1, "versionNumber": 1 }, { "jobId": "job3", "queuedAt": 1517017905, "lastUpdatedAt": 1517017905, "executionNumber": 1, "versionNumber": 1 } ] } }
À ce stade, la tâche job1
a été supprimée de la file d'attente et la prochaine tâche à s'exécuter est job2
. Cette notification est publiée dans la rubrique jobs/notify-next
:
{ "timestamp": 1517186269, "execution": { "jobId": "job2", "status": "QUEUED", "queuedAt": 1517017191, "lastUpdatedAt": 1517017191, "versionNumber": 1, "executionNumber": 1, "jobDocument": { "operation": "test" } } }
Si la tâche job3
doit commencer à s'exécuter avant la tâche job2
(ce qui n'est pas recommandé), le statut de la tâche job3
peut être modifié pour devenir IN_PROGRESS
. Dans cette éventualité, job2
n'est plus la tâche suivante dans la file d'attente et cette notification est publiée dans la rubrique jobs/notify-next
:
{ "timestamp": 1517186779, "execution": { "jobId": "job3", "status": "IN_PROGRESS", "queuedAt": 1517017905, "startedAt": 1517186779, "lastUpdatedAt": 1517186779, "versionNumber": 2, "executionNumber": 1, "jobDocument": { "operation": "test" } } }
Aucune notification n'est publiée dans la rubrique jobs/notify
, car aucune tâche n'a été ajoutée ou supprimée.
Si l'appareil rejette la tâche job2
et met à jour son statut sur REJECTED
, cette notification est publiée dans la rubrique jobs/notify
:
{ "timestamp": 1517189392, "jobs": { "IN_PROGRESS": [ { "jobId": "job3", "queuedAt": 1517017905, "lastUpdatedAt": 1517186779, "startedAt": 1517186779, "executionNumber": 1, "versionNumber": 2 } ] } }
Si la tâche job3
(toujours en cours) est supprimée de force, cette notification est publiée dans la rubrique jobs/notify
:
{ "timestamp": 1517189551, "jobs": {} }
À ce stade, la file d'attente est vide. Cette notification est publiée dans la rubrique jobs/notify-next
:
{ "timestamp": 1517189551 }