Menggunakan queue.yaml untuk mengelola antrean

Meskipun Anda dapat menggunakan file queue.yaml untuk mengelola antrean, mencampur metode pengelolaan antrean dapat menyebabkan hasil yang tidak terduga. Panduan ini menjelaskan risiko mencampuradukkan metode ini dan menunjukkan cara mengatasi masalah konfigurasi umum.

Cloud Tasks API menyediakan antarmuka independen ke layanan App Engine Task Queue. Dengan menggunakan antarmuka ini, Anda dapat mengelola antrean melalui konsol Google Cloud atau Google Cloud CLI. Antrean yang Anda buat dengan Cloud Tasks API dapat diakses dari SDK App Engine—kumpulan API khusus platform, alat mandiri, dan file runtime—dan antrean yang dibuat dengan SDK App Engine dapat diakses dari Cloud Tasks API.

Untuk mempertahankan kompatibilitas, Anda dapat menggunakan queue.yaml, file konfigurasi untuk App Engine SDK, guna membuat dan mengonfigurasi antrean untuk Cloud Tasks API. Namun, mengelola antrean menggunakan file ini serta Cloud Tasks API dapat menyebabkan masalah yang dijelaskan dalam panduan ini.

Sebelum memulai

Jika Anda baru menggunakan Cloud Tasks atau App Engine, gunakan Cloud Tasks API secara eksklusif untuk mengelola antrean dan hindari penggunaan queue.yaml. Metode pengelolaan antrean Cloud Tasks memberi Anda lebih banyak opsi untuk membuat, memperbarui, dan menghapus antrean.

Jika Anda adalah pengguna queue.yaml yang sudah ada, pertimbangkan untuk beralih ke metode pengelolaan antrean Cloud Tasks hanya jika Anda memahami risiko mencampur metode pengelolaan antrean.

Menerapkan metode pengelolaan antrean

Untuk mencegah pencampuran metode pengelolaan antrean, Anda dapat membuat aplikasi web atau alat command line untuk membuat, memperbarui, dan menghapus antrean. Apakah alat tersebut menggunakan metode pengelolaan antrean Cloud Tasks atau queue.yaml adalah detail implementasi yang tidak perlu diketahui pengguna. Dengan mewajibkan penggunaan alat ini, Anda dapat memastikan tidak ada pencampuran metode yang tidak disengaja. Berikan peran Identity and Access Management (IAM) Admin Antrean Cloud Tasks ke alat dan mewajibkan pengguna untuk mengautentikasi. Untuk mengetahui informasi selengkapnya tentang pengelolaan akses, lihat Konfigurasi antrean aman.

Penundaan konfigurasi antrean

Perubahan konfigurasi antrean dapat memerlukan waktu beberapa menit untuk diterapkan. Misalnya, setelah memanggil CreateQueue atau UpdateQueue, mungkin perlu waktu beberapa menit sebelum Anda dapat berhasil memanggil CreateTask di antrean tersebut.

Antrean default App Engine

Antrean App Engine bernama default menerima perlakuan khusus di App Engine SDK dan di Cloud Tasks API.

Kapan antrean default dibuat?

Jika antrean default tidak ada, antrean akan dibuat dalam situasi berikut:

  • Saat tugas pertama kali ditambahkan ke antrean default menggunakan SDK App Engine
  • Saat file queue.yaml yang menentukan antrean default diupload
  • Saat CreateQueue atau UpdateQueue dipanggil untuk membuat antrean default
Batasan apa yang diterapkan Cloud Tasks?

Untuk mempertahankan kompatibilitas dengan App Engine, Cloud Tasks menerapkan batasan ini terkait antrean default:

  • Cloud Tasks API tidak otomatis membuat antrean default atau antrean lainnya
  • Jika antrean bernama default dibuat, antrean tersebut harus berupa antrean yang menggunakan tugas App Engine
  • Memanggil GetQueue di antrean default akan menampilkan error not found jika antrean belum ada
  • Antrean default tidak muncul di output ListQueues hingga dibuat
  • Anda dapat mengubah konfigurasi antrean default menggunakan panggilan UpdateQueue
  • Setelah dibuat, Anda tidak dapat menghapus antrean default

Risiko mencampur metode pengelolaan antrean

Untuk layanan pokok, file queue.yaml bersifat definitif. Mengupload file queue.yaml yang menghilangkan antrean yang ada dalam project Anda, terlepas dari cara antrean tersebut dibuat, akan menonaktifkan atau menjeda antrean tersebut. Misalnya, jika Anda menggunakan Cloud Tasks API untuk memanggil CreateQueue atau UpdateQueue, lalu mengupload file queue.yaml yang tidak menyertakan antrean tersebut, antrean akan dinonaktifkan. Kemudian, Anda harus melanjutkan antrean yang dinonaktifkan.

Mencampur metode pengelolaan antrean dapat menghasilkan perilaku yang tidak terduga. Misalnya, pertimbangkan skenario berikut:

Skenario 1

Anda memanggil CreateQueue untuk membuat antrean bernama cloud-tasks-queue, lalu mengupload file queue.yaml dengan konten berikut:

queue:
- name: queue-yaml-queue

Hal ini menghasilkan status antrean berikut:

  • Antrean bernama cloud-tasks-queue dan antrean lain yang sudah ada sebelumnya berada dalam status DISABLED.
  • Antrean bernama queue-yaml-queue berada dalam status RUNNING.

Skenario 2

Anda menggunakan Cloud Tasks API untuk menonaktifkan antrean, tetapi antrean tersebut muncul di file queue.yaml yang diupload. Antrean dilanjutkan.

Skenario 3

Anda menghapus antrean dengan metode DeleteQueue dan antrean tersebut kemudian muncul dalam file queue.yaml. Upload queue.yaml mungkin gagal karena nama antrean tidak dapat digunakan kembali selama beberapa hari setelah dihapus.

Men-debug menggunakan log audit

Anda dapat memeriksa log audit Aktivitas Admin project dan mengambil histori perubahan konfigurasi antrean, termasuk pembuatan, update, dan penghapusan antrean.

Misalnya, jika upload queue.yaml menonaktifkan antrean yang ada, Anda dapat menjalankan perintah berikut untuk menampilkan pesan log Disabled queue QUEUE_NAME melalui metode com.google.appengine.legacy.queue_updated:

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)'

Untuk mengetahui informasi selengkapnya, lihat Membaca entri log.

Melanjutkan antrean yang dinonaktifkan oleh upload queue.yaml

Jika Anda mencampur metode pengelolaan antrean, 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.

Jika sebelumnya Anda menetapkan pemrosesan kustom rate dalam konfigurasi queue.yaml, ResumeQueue akan mereset antrean ke rate default. Hal ini tercermin dalam kolom maxDispatchesPerSecond respons terhadap ResumeQueue.

Menyelesaikan masalah kuota

Jika Anda menggunakan queue.yaml untuk membuat antrean, project Anda memiliki kuota default untuk jumlah maksimum antrean yang dapat Anda buat. Antrean yang dibuat menggunakan Cloud Tasks API juga memiliki kuota default. Seperti dalam kasus lain, menggabungkan metode queue.yaml dan Cloud Tasks API dapat menghasilkan hasil yang tidak terduga.

Misalnya, saat Anda membuat antrean menggunakan queue.yaml, lalu menerima peningkatan kuota, jika Anda kemudian menggunakan Cloud Tasks API untuk membuat antrean tambahan, Anda mungkin menerima error kehabisan kuota. Untuk mengatasinya, Anda dapat mengelola kuota menggunakan konsol Google Cloud . Untuk mengetahui informasi selengkapnya, lihat Mengelola kuota menggunakan konsol.

Langkah berikutnya