Melakukan Lease Tugas Pull

Setelah tugas berada dalam pull queue, worker melakukan lease untuk tugas tersebut. Setelah tugas diproses, worker harus menghapusnya.

Sebelum memulai

Konteks penting

  • Metode ini hanya berlaku untuk worker yang berjalan dalam layanan di lingkungan standar.
  • Saat menggunakan pull queue, Anda bertanggung jawab untuk menskalakan worker berdasarkan volume pemrosesan Anda.

Tugas leasing

Setelah tugas berada dalam antrean, worker dapat me-lease satu atau beberapa tugas tersebut menggunakan metode leaseTasks(). Mungkin ada penundaan singkat sebelum tugas yang baru ditambahkan menggunakan add() menjadi tersedia melalui leaseTasks().

Saat meminta lease, Anda menentukan jumlah tugas yang akan di-lease (hingga maksimum 1.000 tugas) dan durasi lease dalam hitungan detik (hingga maksimum satu minggu). Durasi lease harus cukup lama untuk memastikan bahwa tugas paling lambat memiliki waktu untuk diselesaikan sebelum periode lease berakhir. Anda dapat mengubah lease tugas menggunakan modifyTaskLease().

Leasing tugas membuat tugas tidak tersedia untuk diproses oleh worker lain, dan tetap tidak tersedia hingga periode lease berakhir.

Contoh kode berikut me-lease tugas dari antrean pull-queue selama satu jam:

List<TaskHandle> tasks = q.leaseTasks(3600, TimeUnit.SECONDS, numberOfTasksToLease);

Membuat batch dengan tag tugas

Tidak semua tugas itu sama; kode Anda dapat "memberi tag" pada tugas lalu memilih tugas untuk di-lease berdasarkan tag. Tag berfungsi sebagai filter.

q.add(
    TaskOptions.Builder.withMethod(TaskOptions.Method.PULL)
        .payload(content.toString())
        .tag("process".getBytes()));

Kemudian, lease tugas yang difilter:

// Lease only tasks tagged with "process"
List<TaskHandle> tasks =
    q.leaseTasksByTag(3600, TimeUnit.SECONDS, numberOfTasksToLease, "process");
// You can also specify a tag to lease via LeaseOptions passed to leaseTasks.

Mengatur laju polling

Worker yang melakukan polling pada antrean untuk tugas yang akan di-lease harus mendeteksi apakah mereka mencoba untuk melakukan lease tugas lebih cepat daripada yang dapat disediakan oleh antrean. Jika kegagalan ini terjadi, pengecualian berikut dari leaseTasks() dapat dihasilkan:


Kode Anda harus menangkap pengecualian ini, berhenti memanggil leaseTasks(), lalu mencoba lagi nanti. Untuk menghindari masalah ini, pertimbangkan untuk menetapkan batas waktu RPC yang lebih tinggi saat memanggil leaseTasks(). Anda juga harus berhenti saat permintaan lease menampilkan daftar tugas kosong.

Jika Anda membuat lebih dari 10 permintaan LeaseTasks per antrean per detik, hanya 10 permintaan pertama yang akan menampilkan hasil. Jika permintaan melebihi batas ini, OK akan ditampilkan dengan hasil nol.

Memantau tugas di konsol Google Cloud

Untuk melihat informasi tentang semua tugas dan antrean dalam aplikasi Anda:

  1. Buka halaman Cloud Tasks di konsol Google Cloud dan cari nilai Pull di kolom Type.

    Buka Cloud Tasks

  2. Klik nama antrean yang Anda minati, lalu halaman detail antrean akan terbuka. Tindakan ini akan menampilkan semua tugas dalam antrean yang dipilih.

Menghapus tugas

Setelah menyelesaikan tugas, worker perlu menghapus tugas dari antrean. Jika Anda melihat tugas tersisa dalam antrean setelah worker selesai memprosesnya, kemungkinan worker tersebut gagal; dalam hal ini, tugas akan diproses oleh worker lain.

Anda dapat menghapus tugas satu per satu atau daftar tugas menggunakan deleteTask(). Anda harus mengetahui nama tugas untuk dapat menghapusnya. Anda dapat menemukan nama tugas di Task object yang ditampilkan oleh leaseTasks().

Contoh kode berikut menunjukkan cara menghapus tugas dari antrean:

q.deleteTask(task);