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
Il AWS Flow Framework for Java consente di contrassegnare determinate 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'operazione daemon avviata all'interno di a TryCatchFinally
è limitata al contesto in cui è stata creata, ovvero sarà limitata ai metodi, o. doTry()
doCatch()
doFinally()
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(); }