Halaman ini menjelaskan perbedaan antara penggunaan Cloud Tasks API untuk mengelola antrean dan penggunaan upload file queue.yaml
Cloud Tasks untuk mencapai tujuan yang sama. Artikel ini juga membahas beberapa
kelemahan mekanisme pencampuran dan cara mengatasi masalah umum.
Pengantar
Cloud Tasks API menyediakan antarmuka independen App Engine ke layanan Task Queue App Engine. Sebagai bagian dari antarmuka tersebut, antarmuka ini memberikan kemampuan untuk mengelola antrean,
termasuk melakukannya melalui konsol atau perintahgcloud
. Antrean yang
dibuat oleh Cloud Tasks API dapat diakses dari App Engine SDK dan sebaliknya. Untuk mempertahankan kompatibilitas, Anda dapat menggunakan file konfigurasi yang digunakan oleh App Engine SDK, queue.yaml
, untuk juga membuat dan mengonfigurasi antrean yang akan digunakan melalui Cloud Tasks API. Namun, menggabungkan konfigurasi melalui file dengan konfigurasi melalui Cloud Tasks API dapat menimbulkan konsekuensi yang tidak terduga.
Perangkap menggabungkan queue.yaml
dengan metode pengelolaan antrean Cloud Tasks
Untuk layanan pokok,file queue.yaml
bersifat definitif. Mengupload queue.yaml
yang menghilangkan antrean yang ada di project Anda, apa pun cara pembuatannya, akan menyebabkan antrean tersebut dinonaktifkan, atau dijeda. Jadi, jika Anda menggunakan Cloud Tasks API untuk memanggil CreateQueue
atau UpdateQueue
, lalu mengupload file queue.yaml
yang menghilangkannya, antrean yang dibuat dalam panggilan Cloud Tasks akan dinonaktifkan.
Pertimbangkan skenario berikut:
- Panggil
CreateQueue
untuk membuat antrean bernama "cloud-tasks-queue". Upload file
queue.yaml
dengan konten berikut:queue: - name: queue-yaml-queue
Apa status antrean saat ini dalam project ini? Antrean bernama
"cloud-tasks-queue" dan antrean lain yang ada sebelumnya berada dalam
status DISABLED
, dan antrean bernama "queue-yaml-queue" berada dalam status RUNNING
.
Perilaku ini mungkin mengejutkan jika Anda membuat antrean melalui Cloud Tasks API. Petunjuk di bawah menjelaskan cara melanjutkan antrean yang dinonaktifkan.
Demikian pula, jika antrean dinonaktifkan di Cloud Tasks API, tetapi kemudian muncul dalam
file queue.yaml
yang diupload, antrean tersebut akan dilanjutkan.
Jika antrean dihapus dengan metode DeleteQueue
dan kemudian muncul dalam file queue.yaml
, upload queue.yaml
dapat gagal karena nama antrean tidak diizinkan untuk digunakan kembali selama beberapa hari setelah penghapusan.
Praktik terbaik
Jika Anda baru menggunakan Cloud Tasks atau App Engine, gunakan Cloud Tasks API secara eksklusif untuk mengelola antrean dan hindari penggunaan queue.yaml
sepenuhnya. Metode pengelolaan antrean Cloud Tasks memberi pengguna lebih banyak pilihan dalam membuat, memperbarui, dan menghapus antrean.
Namun, jika Anda adalah pengguna queue.yaml
yang sudah ada, Anda hanya boleh mempertimbangkan untuk beralih ke metode pengelolaan antrean jika memahami
kelemahan menggabungkan queue.yaml
dengan metode pengelolaan antrean Cloud Tasks.
Untuk mencegah pengguna mencampur metode pengelolaan tugas, salah satu opsi adalah
membuat aplikasi web atau alat command line yang harus digunakan semua pengguna untuk membuat, memperbarui,
dan menghapus antrean. Apakah alat tersebut menggunakan metode pengelolaan antrean Cloud Tasks atau queue.yaml
adalah detail implementasi alat yang tidak perlu dikhawatirkan pengguna. Jika pengguna diwajibkan untuk menggunakan alat ini,
Anda dapat menjamin bahwa tidak ada campuran yang tidak disengaja antara
metode pengelolaan antrean Cloud Tasks dan penggunaan queue.yaml
.
Untuk membantu menegakkan penggunaan alat tersebut, Anda dapat memberikan peran admin antrean ke alat tersebut
dan mewajibkan pengguna untuk mengautentikasi agar dapat menggunakan alat tersebut. Untuk mempelajari lebih lanjut pengelolaan akses, lihat Konfigurasi antrean aman.
Proses Debug
Anda dapat memeriksa log audit Aktivitas Admin project untuk mengambil histori perubahan konfigurasi antrean, termasuk pembuatan, pembaruan, dan penghapusan antrean:
gcloud logging read \
'protoPayload.methodName=
(com.google.appengine.legacy.queue_created OR
com.google.appengine.legacy.queue_updated OR
google.cloud.tasks.v2.CloudTasks.CreateQueue OR
google.cloud.tasks.v2.CloudTasks.UpdateQueue OR
google.cloud.tasks.v2.CloudTasks.DeleteQueue)'
Misalnya, jika antrean yang ada dinonaktifkan oleh upload queue.yaml
, pesan
"Antrean dinonaktifkan '[QUEUE_NAME]'" akan muncul di log audit melalui
metode com.google.appengine.legacy.queue_updated
.
Cara melanjutkan antrean yang dinonaktifkan oleh upload queue.yaml
Jika Anda
menggabungkan queue.yaml
dengan metode pengelolaan antrean Cloud Tasks,
mengupload file queue.yaml
dapat secara tidak sengaja menonaktifkan antrean yang dibuat melalui Cloud Tasks API.
Untuk melanjutkan antrean, Anda dapat memanggil ResumeQueue
di antrean atau menambahkannya ke queue.yaml
dan menguploadnya. Perhatikan bahwa jika sebelumnya Anda telah menetapkan pemrosesan kustom rate
dalam konfigurasi queue.yaml
untuk antrean, ResumeQueue
akan mereset antrean ke rate
default. Hal ini tercermin dalam kolom maxDispatchesPerSecond
respons terhadap ResumeQueue
.
Kuota
Jika menggunakan queue.yaml
untuk membuat antrean, Anda dapat membuat maksimal 100 antrean secara default. Antrean yang dibuat menggunakan Cloud Tasks API memiliki maksimum default 1.000 antrean. Seperti pada
kasus lainnya, menggabungkan metode queue.yaml
dan Cloud Tasks API dapat memberikan hasil yang tidak terduga. Misalnya, Anda membuat beberapa antrean menggunakan queue.yaml
, lalu mendapatkan peningkatan kuota menjadi, misalnya, 2.000. Jika kemudian Anda menggunakan metode Cloud Tasks API untuk membuat antrean lebih lanjut, Anda akan mendapatkan error kuota. Untuk mengatasi hal ini,
ajukan permintaan menggunakan Edit Quotas dari halaman Quotas di
konsol Google Cloud.
Informasi tambahan tentang metode pengelolaan antrean Cloud Tasks
Konfigurasi antrean dan penundaan pengaktifan antrean
Perubahan pada konfigurasi antrean dapat memerlukan waktu beberapa menit untuk diterapkan. Misalnya, setelah memanggil CreateQueue
atau UpdateQueue
, mungkin perlu
menunggu beberapa menit sebelum Anda berhasil memanggil CreateTask
di antrean tersebut.
Cloud Tasks dan antrean App Engine default
Antrean App Engine bernama "default" diberi perlakuan khusus di App Engine SDK dan di Cloud Tasks API.
Jika antrean default
belum ada, antrean akan dibuat dalam situasi
berikut:
- Saat tugas pertama kali ditambahkan ke antrean
default
menggunakan App Engine SDK. - Saat file
queue.yaml
yang menentukan antreandefault
diupload. - Saat
CreateQueue
atauUpdateQueue
dipanggil untuk membuat antreandefault
.
Untuk mempertahankan kompatibilitas dengan App Engine, Cloud Tasks menerapkan batasan berikut:
- Jika antrean bernama "default" dibuat, antrean tersebut harus menggunakan tugas App Engine.
- Setelah dibuat, pengguna tidak dapat menghapus antrean
default
.
Di Cloud Tasks API, hal berikut juga berlaku untuk antrean default
:
- Cloud Tasks API tidak otomatis membuat antrean
default
atau antrean lainnya. - Sama seperti antrean lainnya, memanggil
GetQueue
pada antreandefault
akan menghasilkan error tidak ditemukan jika panggilan dilakukan sebelum antrean dibuat. - Demikian pula, antrean
default
tidak muncul dalam outputListQueues
sebelum dibuat. - Konfigurasi antrean
default
dapat diubah dengan panggilanUpdateQueue
.
Langkah selanjutnya
- Lihat metode yang tersedia di RPC Cloud Tasks API dalam dokumen referensi.
- Lihat metode yang tersedia di REST Cloud Tasks API dalam dokumen referensi.
- Baca tentang
queue.yaml
.