Menetapkan parameter percobaan ulang untuk tugas

Saat membuat tugas, Anda dapat menentukan jumlah maksimum percobaan ulang tugas yang gagal, menetapkan batas waktu untuk percobaan ulang, dan mengontrol interval antar-percobaan menggunakan metode projects.locations.queues.tasks.create. Setelah berhasil dijalankan, tugas akan dihapus dari antrean. Dalam semua kasus, batas retensi tugas maksimum juga berlaku.

Konfigurasi percobaan ulang tingkat tugas ini menggantikan konfigurasi percobaan ulang tingkat antrean untuk tugas.

Mengonfigurasi percobaan ulang saat membuat tugas

Contoh berikut menunjukkan cara menetapkan parameter percobaan ulang saat membuat tugas target HTTP dengan mengirim permintaan langsung ke Cloud Tasks API. Anda dapat menggunakan parameter percobaan ulang yang sama saat membuat tugas App Engine. Untuk detail parameter selengkapnya, lihat setelan RetryConfig untuk resource Task.

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • PROJECT_ID: wajib. Project ID dari project Google Cloud tempat tugas akan dibuat.
  • REGION: wajib. region tempat antrean di-deploy—misalnya, us-central1.
  • QUEUE_ID: wajib. ID antrean tempat tugas akan ditambahkan.
  • URL: wajib. URL yang sepenuhnya memenuhi syarat yang akan dikirimi permintaan. String ini harus diawali dengan http:// atau https://—misalnya: https://www.example.com.
  • SERVICE_ACCOUNT_EMAIL: opsional. Email akun layanan yang digunakan untuk membuat token otorisasi yang disertakan dalam permintaan yang dikirim ke target saat menjalankan tugas. Akun layanan harus berada di project yang sama dengan antrean. Pemanggil harus memiliki izin iam.serviceAccounts.actAs untuk akun layanan.

    Untuk membuat token akses OAuth2, bukan token OpenID Connect, ganti kolom oidcToken dengan oauthToken untuk menentukan email akun layanan.

  • MAX_ATTEMPTS: optional. Jumlah maksimum upaya untuk suatu tugas, termasuk upaya pertama. Untuk mengizinkan percobaan ulang tanpa batas, tetapkan ini ke -1. MAX_RETRY_DURATION tetap berlaku meskipun MAX_ATTEMPTS tercapai atau disetel ke -1.
  • MAX_RETRY_DURATION: optional. Jumlah waktu maksimum untuk mencoba kembali tugas yang gagal, diukur dari saat tugas pertama kali dicoba. Nilai harus berupa string yang diakhiri dengan "s", seperti 5s. Untuk menentukan durasi tidak terbatas, tetapkan ini ke 0s. MAX_ATTEMPTS tetap berlaku meskipun MAX_RETRY_DURATION tercapai atau disetel ke 0s.
  • MIN_INTERVAL: optional. Jumlah waktu minimum untuk menunggu di antara upaya percobaan ulang. Nilai harus berupa string yang diakhiri dengan "s", seperti 5s.
  • MAX_INTERVAL: optional. Jumlah waktu maksimum untuk menunggu di antara upaya percobaan ulang. Nilai harus berupa string yang diakhiri dengan "s", seperti 5s.
  • MAX_DOUBLINGS: optional. Jumlah maksimum interval antara percobaan ulang tugas yang gagal akan dilipatgandakan sebelum peningkatan menjadi konstan. Interval percobaan ulang tugas dimulai pada MIN_INTERVAL, lalu digandakan MAX_DOUBLINGS kali, lalu ditingkatkan secara linear, dan akhirnya dicoba ulang pada interval MAX_INTERVAL hingga MAX_ATTEMPTS kali.

    Misalnya, jika MIN_INTERVAL adalah 10s, MAX_INTERVAL adalah 300s, dan MAX_DOUBLINGS adalah 3, interval percobaan ulang akan ditingkatkan dua kali lipat 3 kali, ditingkatkan secara linear sebesar 2^3 * 10 detik, lalu dicoba ulang pada interval MAX_INTERVAL hingga tugas telah dicoba MAX_ATTEMPTS kali: 10 detik, 20 detik, 40 detik, 80 detik, 160 detik, 240 detik, 300 detik, 300 detik, dan seterusnya.

  • SCHEDULE_TIME: optional. Waktu saat tugas dijadwalkan untuk dicoba, dalam format RFC 3339—misalnya, 2026-10-02T15:01:23Z. Jika waktu tidak ditetapkan atau sudah berlalu, Cloud Tasks akan menyetelnya ke waktu saat ini.

Meminta isi JSON:

{
  "task": {
    "httpRequest": {
      "url": "URL",
      "httpMethod": "POST",
      "oidcToken": {
        "serviceAccountEmail": "SERVICE_ACCOUNT_EMAIL"
      }
    },
    "retryConfig": {
      "maxAttempts": MAX_ATTEMPTS,
      "maxRetryDuration": "MAX_RETRY_DURATION",
      "minBackoff": "MIN_INTERVAL",
      "maxBackoff": "MAX_INTERVAL",
      "maxDoublings": MAX_DOUBLINGS
    },
    "scheduleTime": "SCHEDULE_TIME"
  }
}

Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:

Jika berhasil, isi respons akan memuat instance Task yang baru dibuat.

{
  "name": "projects/PROJECT_ID/locations/REGION/queues/QUEUE_ID/tasks/TASK_ID",
  "httpRequest": {
    "url": "URL",
    "httpMethod": "POST",
    "headers": {
      "User-Agent": "Google-Cloud-Tasks"
    },
    "oidcToken": {
      "serviceAccountEmail": "SERVICE_ACCOUNT_EMAIL",
      "audience": "URL"
    }
  },
  "retryConfig": {
    "maxAttempts": MAX_ATTEMPTS,
    "maxRetryDuration": "MAX_RETRY_DURATION",
    "minBackoff": "MIN_INTERVAL",
    "maxBackoff": "MAX_INTERVAL",
    "maxDoublings": MAX_DOUBLINGS
  },
  "scheduleTime": "SCHEDULE_TIME",
  "createTime": "2026-04-30T19:11:50Z",
  "dispatchDeadline": "600s",
  "view": "BASIC"
}

Langkah berikutnya