Mengantrekan eksekusi alur kerja menggunakan Cloud Tasks

Anda dapat menggunakan Cloud Tasks untuk mengantrekan alur kerja dan menjalankannya secara asinkron.

Cloud Tasks menawarkan kontrol berikut:

  • Menjadwalkan waktu pengiriman tertentu
  • Kelola tarif pengiriman
  • Mengonfigurasi perilaku percobaan ulang
  • Mengakses dan mengelola setiap tugas dalam antrean
  • Aktifkan penghapusan duplikat tugas

Kontrol ini dapat berguna, misalnya, untuk mengelola permintaan yang memicu alur kerja dan yang secara tidak terduga dapat melebihi batas Workflows. Dengan mengonfigurasi antrean Cloud Tasks dengan batas kapasitas dan percobaan ulang, Anda dapat memastikan bahwa semua permintaan tersebut menghasilkan eksekusi alur kerja.

Perhatikan hal-hal berikut:

  • Anda harus mendasarkan batas kapasitas pada batas Workflows untuk Permintaan tulis Execution API. Jika perlu, Anda dapat meminta penambahan sebagian besar kuota di Konsol Google Cloud. Cari tahu permintaan penambahan kuota lebih lanjut.

  • Cloud Tasks dirancang untuk memberikan pengiriman "setidaknya satu kali"; tetapi, Workflows tidak memastikan pemrosesan permintaan duplikat dari Cloud Tasks tepat satu kali.

Untuk mengetahui informasi selengkapnya, baca artikel Memahami Cloud Tasks.

Sebelum memulai

  1. Jika Anda belum memiliki alur kerja yang ingin diantrekan, buatlah.
  2. Aktifkan API Cloud Tasks.

    Mengaktifkan API

Mengantrekan tugas untuk menjalankan alur kerja

  1. 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 berisi antara 6 dan 30 karakter. Nama dapat berisi karakter alfanumerik huruf kecil dan tanda hubung. Setelah membuat akun layanan, Anda tidak dapat mengubah namanya.

  2. Untuk mengizinkan akun utama yang akan menjalankan Cloud Tasks Anda memiliki kemampuan untuk bertindak sebagai akun layanan Identity and Access Management (IAM), berikan peran yang memungkinkan akun utama meniru identitas akun layanan.

  3. 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 Anda buat sebelumnya.
  4. Jika Anda belum memiliki antrean Cloud Tasks, buat antrean.

  5. Buat tugas yang menargetkan endpoint HTTP alur kerja Anda menggunakan akun layanan yang sebelumnya dibuat 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, seperti us-central1.
    • WORKFLOW_NAME: nama alur kerja yang ingin Anda buat tugasnya.
    • 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 akan dibuat dan ditambahkan ke antrean Cloud Tasks. Tugas ini tetap berada dalam antrean sampai eksekusi alur kerja dimulai dan menampilkan kode status HTTP 2xx. Pada titik ini, Cloud Tasks akan menganggap tugas tersebut selesai.

Langkah selanjutnya