Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Sviluppo di un lavoratore di attività in Amazon SWF
Un lavoratore di attività fornisce l'implementazione di uno o più tipi di attività e comunica con Amazon SWF per ricevere task di attività ed eseguirli. È possibile avere molteplici lavoratori di attività che eseguono task di attività dello stesso tipo di attività.
Amazon SWF mette un task di attività a disposizione dei lavoratori di attività quando il decisore pianifica il task di attività. Quando un decisore pianifica un task di attività, fornisce i dati (che tu determini) di cui il lavoratore di attività necessita per eseguire il task di attività. Amazon SWF inserisce questi dati nel task di attività prima di inviarlo al lavoratore di attività.
La gestione dei lavoratori di attività è di tua competenza. I lavoratori di attività possono essere scritti in qualsiasi linguaggio Un lavoratore può essere eseguito ovunque, purché sia in grado di comunicare con Amazon SWF tramite l'API. Poiché Amazon SWF fornisce tutte le informazioni necessarie per eseguire un task di attività, tutti i lavoratori di attività possono essere stateless. La condizione stateless garantisce flussi di lavoro a elevata scalabilità; per gestire i requisiti accresciuti di capacità, è sufficiente aggiungere più lavoratori di attività.
In questa sezione viene descritto come implementare un lavoratore di attività. I lavoratori di attività devono ripetere regolarmente le operazioni elencate di seguito.
-
Eseguire il polling di Amazon SWF per un task di attività.
-
Iniziare l'esecuzione del task.
-
Segnalare periodicamente un heartbeat ad Amazon SWF se il task è di lunga durata.
-
Segnalare il completamento o l'esito negativo del task e restituire i risultati ad Amazon SWF.
Argomenti
Esecuzione del polling dei task di attività
Per eseguire task di attività, ogni lavoratore di attività deve eseguire il polling di Amazon SWF chiamando periodicamente ilPollForActivityTask
Operazione .
Nell'esempio seguente, il lavoratore di attività ChargeCreditCardWorker01
esegue il polling di un task nell'elenco di task, ovvero ChargeCreditCard-v0.1
. Se non sono disponibili task di attività, dopo 60 secondi restituisce una risposta vuota. Una risposta vuota è una struttura Task
in cui il valore del taskToken
è una stringa vuota.
https://swf.us-east-1.amazonaws.com PollForActivityTask { "domain" : "867530901", "taskList" : { "name": "ChargeCreditCard-v0.1" }, "identity" : "ChargeCreditCardWorker01" }
Se un task di attività diventa disponibile, Amazon SWF lo restituisce al lavoratore di attività. Il task contiene i dati che il decisore specifica quando pianifica l'attività.
Dopo che un lavoratore di attività riceve un task di attività, è pronto per eseguire il lavoro. La sezione successiva fornisce informazioni sull'esecuzione di un task di attività.
Esecuzione di un task di attività
Dopo la ricezione di un task di attività, il lavoratore di attività è pronto per eseguirlo.
Per eseguire un task di attività
-
Programma il lavoratore di attività per interpretare il contenuto del campo di input del task. Questo campo contiene i dati specificati dal decisore durante la pianificazione del task.
-
Programma il lavoratore di attività per iniziare a elaborare i dati e a eseguire la logica.
La sezione successiva descrive il modo in cui programmare i lavoratori di attività allo scopo di fornire aggiornamenti dello stato ad Amazon SWF per attività a esecuzione prolungata.
Segnalazione di heartbeat di task di attività
Se un timeout di heartbeat è stato registrato con il tipo di attività, il lavoratore di attività deve registrare un hearbeat prima che il timeout venga superato. Se un task di attività non fornisce un heartbeat entro il timeout, il task scade, Amazon SWF lo chiude e pianifica un nuovo task di decisione per informare un decisore del timeout. Il decisore può quindi pianificare di nuovo il task di attività o intraprendere un'altra operazione.
Se dopo il timeout, il lavoratore di attività tenta di contattare Amazon SWF, ad esempio chiamandoRespondActivityTaskCompleted
, Amazon SWF restituirà unUnknownResource
errore.
Questa sezione descrive come fornire un heartbeat di attività.
Per registrare un heartbeat di task di attività, programma il lavoratore di attività per chiamare l'operazione RecordActivityTaskHeartbeat
. Questa operazione fornisce inoltre un campo stringa che puoi utilizzare per archiviare dati in formato libero allo scopo di quantificare l'avanzamento nel modo più appropriato per la tua applicazione.
In questo esempio, il lavoratore di attività segnala l'heartbeat ad Amazon SWF e utilizza il campo dei dettagli per indicare che il 40% del task di attività è stato completato. Per segnalare l'heartbeat, il lavoratore di attività deve specificare il token del task di attività.
https://swf.us-east-1.amazonaws.com RecordActivityTaskHeartbeat { "taskToken" : "12342e17-80f6-FAKE-TASK-TOKEN32f0223", "details" : "40" }
Questa operazione non crea un evento nella cronologia dell'esecuzione di flusso di lavoro; tuttavia, in caso di timeout del task, la cronologia conterrà un evento ActivityTaskTimedOut
che include le informazioni dell'ultimo heartbeat generato dal lavoratore di attività.
Task di attività completato o non riuscito
Dopo l'esecuzione di un task, il lavoratore di attività deve segnalare se il task è stato completato o se non è riuscito.
Completamento di un task di attività
Per completare un task di attività, programma il lavoratore di attività per chiamare l'operazione RespondActivityTaskCompleted
dopo il completamento senza errori di un task di attività, specificando il token di task.
Nell'esempio seguente, il lavoratore di attività indica che il task è stato completato senza errori.
https://swf.us-east-1.amazonaws.com RespondActivityTaskCompleted { "taskToken": "12342e17-80f6-FAKE-TASK-TOKEN32f0223", "results": "40" }
Al completamento dell'attività, Amazon SWF pianifica un nuovo task di decisione per l'esecuzione di flusso di lavoro a cui l'attività è associata.
Programma il lavoratore di attività per eseguire il polling di un altro task di attività dopo il completamento del task corrente. Questa operazione crea un ciclo in cui un lavoratore di attività cerca e completa i task continuamente.
Se l'attività non risponde all'interno delInizia a chiudere il timeoutperiodo o sePianificazione per chiudere il timeoutè stato superato, Amazon SWF esegue il timeout del task di attività e pianifica un task di decisione. Ciò consente a un decisore di intraprendere un'operazione appropriata, come una nuova pianificazione del task.
Ad esempio, se un'istanza di Amazon EC2 esegue un task di attività e l'istanza non riesce prima del completamento del task, il decisore riceve un evento di timeout nella cronologia dell'esecuzione di flusso di lavoro. Se il task di attività utilizza un heartbeat, il decisore riceve l'evento quando il task non riesce a recapitare il heartbeat successivo dopo l'esito negativo dell'istanza di Amazon EC2. In caso contrario, il decisore riceve l'evento se il task di attività non viene completato entro i valori di timeout. Spetta quindi al decisore riassegnare il task o intraprendere un'altra operazione.
Generazione di un errore in un task di attività
Se per un qualsiasi motivo un lavoratore di attività non può eseguire un task, ma può continuare a comunicare con Amazon SWF, puoi programmarlo affinché generi un errore nel task.
A questo proposito, devi programmare il lavoratore di attività di modo che chiami l'operazione RespondActivityTaskFailed
che specifica il token del task.
https://swf.us-east-1.amazonaws.com RespondActivityTaskFailed { "taskToken" : "12342e17-80f6-FAKE-TASK-TOKEN32f0223", "reason" : "CC-Invalid", "details" : "Credit Card Number Checksum Failed" }
In quanto sviluppatore, devi definire i valori nei campi relativi al motivo e ai dettagli. Questi valori sono stringhe in formato libero. Puoi utilizzare le convenzioni di codice di errore necessarie per la tua applicazione. Amazon SWF non elabora questi valori. Tuttavia, Amazon SWF può visualizzarli nella console.
Quando si genera un errore in un task di attività, Amazon SWF pianifica un task di decisione per l'esecuzione di flusso di lavoro a cui il task di attività è associato allo scopo di informare il decisore dell'errore. Programma il decisore per gestire le attività non riuscite, ad esempio pianificando di nuovo l'attività o generando un errore nell'esecuzione di flusso di lavoro, a seconda della natura dell'errore.
Avvio di lavoratori di attività
Per avviare i lavoratori di attività, crea un pacchetto della logica come eseguibile che puoi utilizzare sulla piattaforma dei lavoratori di attività. Ad esempio, potresti creare un pacchetto del codice delle attività come eseguibile Java che puoi eseguire su server Linux e Windows.
Dopo l'avvio, i lavoratori iniziano a eseguire il polling dei task. Tuttavia, fino a che il decisore non pianifica task di attività, queste ricerche scadono senza task e i lavoratori continuano a eseguire il polling.
Poiché i poll sono richieste in uscita, il lavoratore di attività può essere eseguito su qualsiasi rete che ha accesso all'endpoint di Amazon SWF.
Puoi avviare un numero illimitato di lavoratori di attività. Quando il decisore pianifica task di attività, Amazon SWF distribuisce automaticamente le task di attività ai lavoratori di attività in.