Pelanggan mungkin tidak dapat menangani pesan karena berbagai alasan. Misalnya, mungkin ada masalah sementara saat mengambil data yang diperlukan untuk memproses pesan. Atau, pesan dapat berupa format yang tidak diharapkan oleh pelanggan.
Untuk mengelola pesan yang tidak terkirim yang tidak dapat dikonfirmasi oleh pelanggan, Pub/Sub dapat meneruskannya ke topik pesan yang dihentikan pengirimannya (juga dikenal sebagai antrean pesan yang dihentikan pengirimannya).
Sebelum memulai
Buat topik untuk konfigurasi topik yang dihentikan pengirimannya.
Atau, jika Anda mengikuti semua petunjuk di halaman ini dari awal hingga akhir, Anda dapat membuat topik pada langkah berikutnya.
Peran yang diperlukan
Untuk mendapatkan izin yang
diperlukan guna mengelola topik dan langganan,
minta administrator 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.
Cara kerja topik yang dihentikan pengirimannya
Jika aplikasi pelanggan tidak dapat mengonfirmasi pesan, Pub/Sub akan mencoba kembali pengiriman hingga batas waktu konfirmasi terpenuhi atau pesan berakhir. Setelah upaya pengiriman yang dikonfigurasi kira-kira berjumlah sekian kali, Pub/Sub dapat meneruskan pesan yang tidak dapat dikirim ke topik pesan yang tidak terkirim.
Saat meneruskan pesan yang tidak dapat dikirim, Pub/Sub akan membungkus pesan asli dalam pesan baru dan menambahkan atribut yang mengidentifikasi langganan sumber. Pesan kemudian dikirim ke topik pesan yang tidak terkirim yang ditentukan. Langganan terpisah yang dilampirkan ke topik pesan yang dihentikan pengirimannya kemudian dapat menerima pesan yang diteruskan ini untuk dianalisis dan di-debug secara offline.
Cara penghitungan upaya pengiriman maksimum
Pub/Sub hanya menghitung upaya pengiriman jika topik dead-letter dikonfigurasi dengan benar dan menyertakan izin IAM yang benar.
Jumlah maksimum upaya pengiriman diperkirakan karena Pub/Sub meneruskan pesan yang tidak dapat dikirimkan berdasarkan upaya terbaik. Layanan dapat meneruskan pesan setelah lebih sedikit upaya daripada yang dikonfigurasi, atau layanan dapat mencoba pengiriman beberapa kali lagi sebelum meneruskan.
Jumlah upaya pengiriman yang dilacak untuk pesan juga dapat direset ke nol, terutama untuk langganan pull dengan pelanggan yang tidak aktif. Akibatnya, pesan mungkin dikirim ke klien pelanggan lebih banyak daripada jumlah maksimum upaya pengiriman yang dikonfigurasi.
Properti topik dead-letter
Anda dapat menyetel properti langganan berikut pada topik pesan yang tidak terkirim.
Jumlah maksimum upaya pengiriman: Nilai numerik yang menandakan jumlah upaya pengiriman yang dilakukan Pub/Sub untuk pesan tertentu. Jika klien pelanggan tidak dapat mengonfirmasi pesan dalam jumlah percobaan pengiriman yang dikonfigurasi, pesan akan diteruskan ke topik pesan yang tidak terkirim.
- Nilai default = 5
- Nilai maksimum = 100
- Nilai minimum = 5
Project dengan topik yang dihentikan pengirimannya: Jika topik yang dihentikan pengirimannya berada di project yang berbeda dengan langganan, Anda harus menentukan project dengan topik yang dihentikan pengirimannya. Tetapkan topik yang dihentikan pengirimannya ke topik yang berbeda dari topik yang terlampir langganannya.
Mengonfigurasi topik yang dihentikan pengirimannya
Langkah-langkah berikut menjelaskan alur kerja untuk menggunakan topik pesan yang tidak terkirim.
Buat topik (untuk digunakan sebagai topik yang dihentikan pengirimannya).
Buat langganan untuk topik yang dihentikan pengirimannya.
Aktifkan Dead lettering di langganan Anda.
Lampirkan topik yang Anda buat sebelumnya ke langganan Anda.
Berikan peran yang diperlukan untuk menggunakan topik pesan yang tidak terkirim ke akun layanan Pub/Sub Anda.
Membuat topik untuk digunakan dengan topik yang dihentikan pengirimannya
Jika sudah membuat topik untuk digunakan dalam langganan, Anda dapat melewati langkah ini.
Di konsol Google Cloud , buka halaman Topics.
Klik Create topic.
Masukkan Topic ID, misalnya,
my-test-topic.Pertahankan opsi untuk langganan default, lalu klik Buat.
Menetapkan topik yang dihentikan pengirimannya pada langganan
Anda dapat menyetel topik pesan yang tidak terkirim pada langganan baru atau langganan yang sudah ada.
Menetapkan topik yang dihentikan pengirimannya pada langganan baru
Anda dapat membuat langganan dan menetapkan topik surat yang tidak terkirim menggunakan konsolGoogle Cloud , Google Cloud CLI, library klien, atau Pub/Sub API.
Konsol
Untuk membuat langganan dan menetapkan topik yang dihentikan pengirimannya, selesaikan langkah-langkah berikut:
Di konsol Google Cloud , buka halaman Subscriptions.
Klik Buat langganan.
Masukkan ID Langganan.
Pilih topik yang ingin Anda gunakan dengan langganan Anda. Langganan menerima pesan dari topik. Ini bukan topik yang dihentikan pengirimannya. Anda akan memilihnya di langkah berikutnya.
Di bagian Dead lettering, pilih Aktifkan dead lettering.
Pilih topik pesan yang tidak terkirim dari menu drop-down.
Jika topik surat yang tidak terkirim yang dipilih tidak memiliki langganan, sistem akan meminta Anda untuk membuatnya.
Di kolom Upaya pengiriman maksimum, tentukan bilangan bulat antara 5 dan 100.
Klik Create.
Klik panel Detail untuk mengidentifikasi kemungkinan item tindakan. Jika ada item yang menampilkan ikon error , klik item tindakan untuk menyelesaikan masalah.

gcloud
Untuk membuat langganan dan menetapkan topik yang dihentikan pengirimannya, gunakan perintah
gcloud pubsub subscriptions create:
gcloud pubsub subscriptions create subscription-id \ --topic=topic-id \ --dead-letter-topic=dead-letter-topic-name \ [--max-delivery-attempts=max-delivery-attempts] \ [--dead-letter-topic-project=dead-letter-topic-project]
C++
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan C++ di Panduan memulai: Menggunakan Library Klien. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API C++ Pub/Sub.
C#
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan C# di Panduan memulai: Menggunakan Library Klien. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API C# Pub/Sub.
Go
Contoh berikut menggunakan versi utama library klien Go Pub/Sub (v2). Jika Anda masih menggunakan library v1, lihat panduan migrasi ke v2. Untuk melihat daftar contoh kode v1, lihat contoh kode yang tidak digunakan lagi.
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Go di Panduan memulai: Menggunakan Library Klien. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Go Pub/Sub.
Java
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Java di Panduan memulai: Menggunakan Library Klien. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi Java API Pub/Sub.
Node.js
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Node.js di Panduan memulai: Menggunakan Library Klien. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Node.js Pub/Sub.