Menggunakan Pengelolaan Antrean atau queue.yaml

Halaman ini menjelaskan perbedaan antara menggunakan Cloud Tasks API untuk mengelola antrean dan menggunakan upload file queue.yaml Cloud Tasks untuk menyelesaikan tujuan yang sama. Bagian ini juga membahas beberapa kesalahan mekanisme pencampuran dan cara menangani masalah umum.

Pengantar

Cloud Tasks API menyediakan antarmuka yang tidak bergantung pada App Engine untuk layanan App Engine Task Queue. Sebagai bagian dari antarmuka tersebut, layanan ini memberikan kemampuan untuk mengelola antrean, termasuk melakukannya melalui konsol atau perintah gcloud. Antrean yang dibuat oleh Cloud Tasks API dapat diakses dari App Engine SDK dan sebaliknya. Guna mempertahankan kompatibilitas, Anda dapat menggunakan file konfigurasi yang digunakan oleh App Engine SDK, queue.yaml, untuk membuat dan mengonfigurasi antrean yang akan digunakan melalui Cloud Tasks API. Namun, menggabungkan konfigurasi melalui file dengan konfigurasi melalui Cloud Tasks API dapat menghasilkan konsekuensi yang tidak terduga.

Kesalahan menggabungkan queue.yaml dengan metode pengelolaan antrean Cloud Tasks

Untuk layanan yang mendasarinya,file queue.yaml bersifat definitif. Mengupload queue.yaml yang menghapus antrean yang ada di project Anda, bagaimana pun cara pembuatannya, akan menyebabkan antrean tersebut dinonaktifkan, atau dijeda. Oleh karena itu, 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:

  1. Panggil CreateQueue untuk membuat antrean bernama "cloud-tasks-queue".
  2. Upload file queue.yaml dengan konten berikut:

    queue:
    - name: queue-yaml-queue
    

Bagaimana status antrean saat ini dalam project ini? Antrean bernama "cloud-tasks-queue" dan antrean lain yang sudah 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 lalu muncul dalam file queue.yaml, upload queue.yaml bisa 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 menghindari penggunaan queue.yaml sama sekali. Metode pengelolaan antrean Cloud Tasks memberi pengguna lebih banyak pilihan dalam membuat, memperbarui, dan menghapus antrean.

Namun, jika Anda adalah pengguna queue.yaml lama, sebaiknya hanya mempertimbangkan untuk beralih ke metode pengelolaan antrean jika Anda memahami masalah menggabungkan queue.yaml dengan metode pengelolaan antrean Cloud Tasks.

Untuk mencegah pengguna menggabungkan metode pengelolaan tugas, salah satu opsinya 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 pencampuran metode pengelolaan antrean Cloud Tasks dan penggunaan queue.yaml yang tidak disengaja. Untuk membantu menerapkan penggunaan alat semacam itu, Anda dapat memberikan peran admin antrean kepada alat tersebut dan mengharuskan pengguna melakukan autentikasi agar dapat menggunakan alat tersebut. Untuk mempelajari pengelolaan akses lebih lanjut, 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 pada antrean atau menambahkannya ke queue.yaml dan menguploadnya. Perhatikan bahwa jika Anda sebelumnya telah menetapkan rate pemrosesan kustom 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 maksimum 100 antrean secara default. Antrean yang dibuat menggunakan Cloud Tasks API memiliki batas default maksimum 1.000 antrean. Seperti dalam kasus lain, menggabungkan metode queue.yaml dan Cloud Tasks API dapat memberikan hasil yang tidak terduga. Contohnya, Anda membuat beberapa antrean menggunakan queue.yaml, lalu mendapatkan peningkatan kuota, misalnya, 2.000. Jika kemudian Anda menggunakan metode Cloud Tasks API untuk membuat antrean lebih lanjut, Anda akan kehabisan error kuota. Untuk mengatasi hal ini, ajukan permintaan menggunakan Edit Quotas dari halaman Quotas di Google Cloud Console.

Informasi tambahan tentang metode pengelolaan antrean Cloud Tasks

Konfigurasi antrean dan penundaan startup antrean

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

Cloud Tasks dan App Engine queue default

App Engine queue yang 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:

  1. Saat tugas pertama kali ditambahkan ke antrean default menggunakan App Engine SDK.
  2. Saat file queue.yaml yang menentukan antrean default diupload.
  3. Saat CreateQueue atau UpdateQueue dipanggil untuk membuat antrean default.

Untuk menjaga kompatibilitas dengan App Engine, Cloud Tasks menerapkan pembatasan berikut:

  1. Jika antrean bernama "default" dibuat, antrean tersebut harus berupa antrean yang menggunakan tugas App Engine.
  2. Setelah dibuat, pengguna tidak dapat menghapus antrean default.

Di Cloud Tasks API, hal berikut juga berlaku untuk antrean default:

  1. Cloud Tasks API tidak otomatis membuat antrean default atau antrean lainnya.
  2. Sama seperti antrean lainnya, memanggil GetQueue pada antrean default akan menghasilkan error tidak ditemukan jika panggilan dilakukan sebelum antrean dibuat.
  3. Demikian pula, antrean default tidak akan muncul dalam output ListQueues sebelum dibuat.
  4. Konfigurasi antrean default dapat diubah dengan panggilan UpdateQueue.

Langkah selanjutnya