Pelanggan mungkin gagal memproses pesan karena beberapa alasan. Misalnya, pelanggan dapat mengalami masalah sementara saat mengambil data yang diperlukan, atau mungkin menerima pesan dalam format yang tidak terduga.
Jika Pub/Sub mencoba mengirimkan pesan, tetapi pelanggan tidak dapat mengonfirmasinya, Pub/Sub akan otomatis mencoba mengirim ulang pesan. Upaya pengiriman ulang ini dikenal sebagai kebijakan percobaan ulang langganan. Ini bukan fitur yang dapat Anda aktifkan atau nonaktifkan. Namun, Anda dapat memilih jenis kebijakan percobaan ulang yang ingin Anda gunakan.
Sebelum memulai
- Buat topik yang akan Anda gunakan dengan langganan yang berisi kebijakan percobaan ulang langganan.
Peran yang diperlukan
Untuk mendapatkan izin yang Anda perlukan guna mengelola topik dan langganan, minta administrator Anda untuk memberi Anda peran IAM Pub/Sub Editor(roles/pubsub.editor
) di project Anda.
Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses ke project, folder, dan organisasi.
Anda mungkin juga bisa mendapatkan izin yang diperlukan melalui peran khusus atau peran bawaan lainnya.
Anda dapat mengonfigurasi kontrol akses di tingkat project dan di tingkat resource individual. Anda dapat membuat langganan dalam satu project dan melampirkannya ke topik yang berada dalam project lain. Pastikan Anda memiliki izin yang diperlukan untuk setiap project.
Jenis kebijakan coba lagi
Saat pertama kali membuat dan mengonfigurasi langganan, Anda dapat memilih untuk menggunakan salah satu kebijakan percobaan ulang berikut, pengiriman ulang langsung atau backoff eksponensial. Secara default, langganan menggunakan pengiriman ulang langsung.
Pengiriman ulang segera
Secara default, Pub/Sub mencoba mengirim ulang pesan segera (dan berpotensi ke klien pelanggan yang sama). Namun, jika kondisi yang mencegah pengiriman ulang pesan belum berubah, pengiriman ulang langsung dapat menyebabkan masalah. Dalam hal ini, Pub/Sub mungkin akan mengirim ulang beberapa pesan yang tidak dapat dikonfirmasi.
Untuk mengatasi masalah pengiriman ulang langsung, Pub/Sub memungkinkan Anda mengonfigurasi kebijakan backoff eksponensial.
Backoff eksponensial
Backoff eksponensial memungkinkan Anda menambahkan penundaan yang semakin lama di antara upaya percobaan ulang. Setelah kegagalan pengiriman pertama, Pub/Sub menunggu waktu backoff minimum sebelum mencoba lagi. Untuk setiap kegagalan pesan berturut-turut, lebih banyak waktu ditambahkan ke penundaan, hingga penundaan maksimum (0 dan 600 detik).
Interval penundaan maksimum dan minimum tidak tetap, dan harus dikonfigurasi berdasarkan faktor lokal untuk aplikasi Anda.
Perhatikan pertimbangan berikut tentang backoff eksponensial:
- Backoff eksponensial dipicu pada tindakan berikut:
- Saat pengakuan negatif diterima.
- Saat batas waktu konfirmasi pesan berakhir.
- Pencadangan eksponensial hanya diterapkan per pesan, bukan ke semua pesan dalam langganan (global).
- Saat menggunakan backoff eksponensial, Pub/Sub terus mengirimkan pesan lain, meskipun pesan sebelumnya menerima konfirmasi negatif (kecuali, Anda menggunakan pengiriman pesan yang diurutkan).
Gunakan kebijakan percobaan ulang untuk menunda pengiriman dan pemrosesan sebagian pesan untuk mengakomodasi ketidakmampuan sementara dalam memproses beberapa pesan saat pengiriman. Fitur ini diterapkan berdasarkan upaya terbaik dan setiap pesan dievaluasi untuk kebijakan percobaan ulang secara terpisah.
Sebaiknya jangan gunakan fitur ini untuk menunda pengiriman pesan secara sengaja. Jika Anda secara negatif mengonfirmasi (nack) sejumlah besar pesan pada langganan yang dikonfigurasi dengan kebijakan coba lagi, ada kemungkinan beberapa pesan tersebut dikirimkan dengan lebih sedikit atau tanpa penundaan. Pub/Sub juga dapat memperlambat pengiriman semua pesan jika Anda mengirimkan konfirmasi negatif untuk sejumlah besar pesan.
Jika Anda perlu menjadwalkan pengiriman, pertimbangkan untuk menggunakan Cloud Tasks.
Mengonfigurasi backoff eksponensial
Konsol
Saat membuat langganan baru, Anda dapat mengonfigurasi kebijakan coba lagi dengan penundaan eksponensial menggunakan langkah-langkah berikut:
- Di konsol Google Cloud , buka halaman Pub/Sub subscriptions.
Klik Buat langganan.
Di kolom Subscription ID, masukkan nama.
Untuk mengetahui informasi tentang cara memberi nama langganan, lihat Pedoman untuk memberi nama topik atau langganan.
- Pilih atau buat topik dari menu drop-down.
Langganan menerima pesan dari topik.
Pilih Jenis penayangan.
Di bagian Kebijakan percobaan ulang, pilih Coba lagi setelah backoff eksponensial.
Masukkan Backoff minimum dan Backoff maksimum antara 0 dan 600 detik.
Nilai default-nya adalah 10 detik untuk backoff minimum, dan 600 detik untuk backoff maksimum.
- Klik Buat.
gcloud
Untuk membuat langganan baru dengan kebijakan coba lagi mundur eksponensial, jalankan perintah gcloud pubsub create
berikut.
gcloud pubsub subscriptions create SUBSCRIPTION_ID \ --topic=TOPIC_ID \ --min-retry-delay=MIN_RETRY_DELAY \ --max-retry-delay=MAX_RETRY_DELAY
Ganti kode berikut:
SUBSCRIPTION_ID
: ID unik untuk langganan Anda.TOPIC_ID
: ID topik yang ingin Anda lampirkan langganannya.MIN_RETRY_DELAY
: penundaan mundur minimum untuk langganan.MAX_RETRY_DELAY
: penundaan mundur maksimum untuk langganan.
Langkah berikutnya
- Mendapatkan pesan yang tidak terkirim yang diteruskan.
- Pantau aplikasi Pub/Sub.
- Pelajari konsep pengiriman pesan.