Anda dapat menggunakan Cloud Tasks untuk mengantrekan alur kerja dan mengeksekusinya secara asinkron.
Cloud Tasks menawarkan kontrol berikut:
- Menjadwalkan waktu pengiriman tertentu
- Mengelola rasio penayangan
- Mengonfigurasi perilaku percobaan ulang
- Mengakses dan mengelola tugas individual dalam antrean
- Mengaktifkan penghapusan duplikat tugas
Kontrol ini dapat berguna, misalnya, untuk mengelola permintaan yang memicu alur kerja dan yang secara tidak terduga dapat melampaui batas Workflows. Dengan mengonfigurasi antrean Cloud Tasks dengan batas frekuensi dan percobaan ulang, Anda dapat memastikan bahwa semua permintaan tersebut menghasilkan eksekusi alur kerja.
Untuk mengetahui informasi selengkapnya, lihat Memahami Cloud Tasks.
Perhatikan hal berikut:
Anda harus mendasarkan batas frekuensi pada batas Workflows untuk permintaan penulisan Execution API. Jika perlu, Anda dapat meminta penyesuaian pada sebagian besar kuota di konsol Google Cloud . Cari tahu lebih lanjut penyesuaian kuota.
Cloud Tasks didesain untuk memberikan pengiriman "setidaknya satu kali"; namun, Workflows tidak memastikan pemrosesan tepat satu kali untuk permintaan duplikat dari Cloud Tasks.
Anda dapat menghilangkan penundaan eksekusi dan memaksimalkan throughput dengan mengaktifkan penumpukan eksekusi di Alur Kerja. Eksekusi yang tertunda akan otomatis berjalan segera setelah kuota serentak eksekusi tersedia. Untuk mengetahui informasi selengkapnya, lihat Mengelola backlog eksekusi.
Sebelum memulai
- Jika Anda belum memiliki alur kerja yang ingin dimasukkan dalam antrean, buat alur kerja.
-
Enable the Cloud Tasks API.
Mengantrekan tugas untuk menjalankan alur kerja
Buat akun layanan agar Cloud Tasks dapat membuat permintaan ke Workflows API:
gcloud iam service-accounts create SERVICE_ACCOUNT_NAME
Ganti
SERVICE_ACCOUNT_NAME
dengan nama yang terdiri dari 6 hingga 30 karakter. Dapat berisi karakter alfanumerik huruf kecil dan tanda hubung. Setelah membuat akun layanan, Anda tidak dapat mengubah namanya.Agar akun utama yang akan menjalankan perintah Cloud Tasks Anda dapat bertindak sebagai akun layanan Identity and Access Management (IAM), berikan peran yang memungkinkan akun utama meniru identitas akun layanan tersebut.
Beri akun layanan baru Anda peran workflows.invoker agar akun tersebut memiliki izin untuk memicu alur kerja Anda:
gcloud projects add-iam-policy-binding PROJECT_NAME \ --member serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_NAME.iam.gserviceaccount.com \ --role roles/workflows.invoker
Ganti kode berikut:
PROJECT_NAME
: nama project Google Cloud Anda.SERVICE_ACCOUNT_NAME
: nama akun layanan yang sebelumnya Anda buat.
Jika Anda belum memiliki antrean Cloud Tasks, buat antrean.
Buat tugas yang menargetkan endpoint HTTP alur kerja Anda, menggunakan akun layanan yang sebelumnya Anda buat untuk mengautentikasi:
gcloud tasks create-http-task \ --queue="QUEUE_ID" \ --url="https://workflowexecutions.googleapis.com/v1/projects/PROJECT_NAME/locations/REGION_NAME/workflows/WORKFLOW_NAME/executions" \ --body-content="{\"argument\": \"DOUBLE_ESCAPED_JSON_STRING\"}" \ --oauth-service-account-email="SERVICE_ACCOUNT_NAME@PROJECT_NAME.iam.gserviceaccount.com"
Ganti kode berikut:
QUEUE_ID
: ID yang Anda tetapkan ke antrean Cloud Tasks; misalnya,my-queue
.PROJECT_NAME
: nama project Google Cloud Anda.REGION_NAME
: region tempat alur kerja Anda berada, sepertius-central1
.WORKFLOW_NAME
: nama alur kerja yang ingin Anda buatkan tugas.DOUBLE_ESCAPED_JSON_STRING
: encoding JSON dari argumen apa pun yang Anda teruskan. Tanda kutip ganda di dalam string yang dikutip di-escape menggunakan garis miring terbalik (\). Misalnya:--body-content="{\"argument\": \"{\\\"foo\\\": \\\"bar\\\"}\"}"
SERVICE_ACCOUNT_NAME
: nama akun layanan yang Anda buat sebelumnya.
Tugas Anda dibuat dan ditambahkan ke antrean Cloud Tasks. Tugas tetap ada dalam antrean hingga eksekusi alur kerja dimulai dan menampilkan kode status HTTP
2xx
, yang pada saat itu Cloud Tasks menganggap tugas selesai.
Langkah berikutnya
- Tutorial: Menggunakan antrean Cloud Tasks untuk melakukan buffering eksekusi alur kerja Anda
- Mengelola antrean dan tugas
- Mengelola penumpukan eksekusi
- Meneruskan argumen runtime dalam permintaan eksekusi