Task Daemon - AWS Flow Framework per Java

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

Task Daemon

LaAWS Flow Frameworkper Java permette di contrassegnare alcune attività comedaemon. Questa funzionalità ti permette di creare task che effettuano un lavoro di background che deve essere annullato quando tutti gli altri lavori sono stati eseguiti. Ad esempio, un task di monitoraggio dello stato deve essere annullato quando il resto del flusso di lavoro è completato. Puoi farlo impostando il contrassegno daemon su un metodo asincrono o un'istanza di TryCatchFinally. Nell'esempio seguente, il metodo asincrono monitorHealth() è contrassegnato come daemon.

public class MyWorkflowImpl implements MyWorkflow { MyActivitiesClient activitiesClient = new MyActivitiesClientImpl(); @Override public void startMyWF(int a, String b) { activitiesClient.doUsefulWorkActivity(); monitorHealth(); } @Asynchronous(daemon=true) void monitorHealth(Promise<?>... waitFor) { activitiesClient.monitoringActivity(); } }

Nell'esempio riportato sopra, quando doUsefulWorkActivity viene completato, monitoringHealth viene automaticamente annullato. Questa operazione annulla l'intero ramo di esecuzione radicato nel metodo asincrono. La semantica dell'annullamento è identica a quella di TryCatchFinally. Analogamente, puoi contrassegnare un daemon TryCatchFinally passando un contrassegno Boolean al costruttore.

public class MyWorkflowImpl implements MyWorkflow { MyActivitiesClient activitiesClient = new MyActivitiesClientImpl(); @Override public void startMyWF(int a, String b) { activitiesClient.doUsefulWorkActivity(); new TryFinally(true) { @Override protected void doTry() throws Throwable { activitiesClient.monitoringActivity(); } @Override protected void doFinally() throws Throwable { // clean up } }; } }

Un'attività demone iniziata all'interno di unTryCatchFinallyè inquadrata al contesto in cui è stato creato, ovvero verrà assegnato a uno dei duedoTry(),doCatch(), oppuredoFinally()Metodi. Nel seguente esempio il metodo asincrono startMonitoring viene contrassegnato come daemon e chiamato da doTry(). Il task creato verrà annullato non appena gli altri task (doUsefulWorkActivity in questo caso) avviati entro doTry() saranno completati.

public class MyWorkflowImpl implements MyWorkflow { MyActivitiesClient activitiesClient = new MyActivitiesClientImpl(); @Override public void startMyWF(int a, String b) { new TryFinally() { @Override protected void doTry() throws Throwable { activitiesClient.doUsefulWorkActivity(); startMonitoring(); } @Override protected void doFinally() throws Throwable { // Clean up } }; } @Asynchronous(daemon = true) void startMonitoring(){ activitiesClient.monitoringActivity(); }