Tugas Daemon - AWS Flow Framework untuk Java

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Tugas Daemon

The AWS Flow Framework for Java memungkinkan penandaan tugas-tugas tertentu sebagaidaemon. Ini memungkinkan Anda membuat tugas yang melakukan beberapa pekerjaan latar belakang yang harus dibatalkan saat semua pekerjaan lain selesai. Sebagai contoh, tugas pemantauan kesehatan harus dibatalkan ketika sisa alur kerja selesai. Anda dapat melakukan ini dengan menetapkan bendera daemon pada metode asinkronus atau instans dari TryCatchFinally. Pada contoh berikut, metode asinkronus monitorHealth() ditandai sebagai 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(); } }

Dalam contoh di atas, saat doUsefulWorkActivity diselesaikan, monitoringHealth akan dibatalkan secara otomatis. Hal ini pada gilirannya akan membatalkan seluruh cabang eksekusi berakar pada metode asinkronus ini. Semantik pembatalan sama seperti di TryCatchFinally. Demikian pula, Anda dapat menandai daemon TryCatchFinally dengan menenruskan bendera Boolean untuk konstruktor.

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

Tugas daemon yang dimulai dalam TryCatchFinally dicakupkan ke konteks pembuatannya—yaitu, akan dicakup ke metode doTry(), doCatch(), atau doFinally(). Misalnya, dalam contoh berikut, metode asinkron startMonitoring ditandai daemon dan dipanggil dari doTry(). Tugas yang dibuat untuk itu akan dibatalkan segera setelah tugas-tugas lain (doUsefulWorkActivity dalam kasus ini) yang dimulai dalam doTry() diselesaikan.

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(); }