Memutar ulang pesan di Pub/Sub dengan mencari snapshot atau stempel waktu
Pub/Sub tidak dapat mengambil pesan setelah Anda mengonfirmasinya. Namun, terkadang Anda mungkin merasa perlu memutar ulang pesan yang dikonfirmasi, misalnya, jika Anda melakukan konfirmasi yang salah. Kemudian, Anda dapat menggunakan fitur Seek untuk menandai pesan yang sebelumnya telah dikonfirmasi sebagai tidak terkonfirmasi, dan memaksa Pub/Sub mengirim ulang pesan tersebut. Anda juga dapat mencari untuk menghapus pesan yang tidak terkonfirmasi dengan mengubah statusnya menjadi dikonfirmasi.
Cari ke snapshot atau cari stempel waktu untuk memutar ulang pesan dalam langganan. Panduan ini menunjukkan contoh cara memutar ulang pesan Pub/Sub yang telah dikonfirmasi sebelumnya menggunakan pencarian.
Jika ingin mengikuti panduan langkah demi langkah untuk tugas ini langsung di Konsol Google Cloud, klik Pandu saya:
Sebelum memulai
- Login ke akun Google Cloud Anda. Jika Anda baru menggunakan Google Cloud, buat akun untuk mengevaluasi performa produk kami dalam skenario dunia nyata. Pelanggan baru juga mendapatkan kredit gratis senilai $300 untuk menjalankan, menguji, dan men-deploy workload.
-
Siapkan project Konsol Google Cloud
Klik:
- Buat atau pilih project.
- Aktifkan API Pub/Sub untuk project tersebut.
Anda dapat melihat dan mengelola resource ini kapan saja di Konsol Google Cloud.
- Menginstal Google Cloud CLI.
-
Untuk initialize gcloud CLI, jalankan perintah berikut:
gcloud init
-
Siapkan project Konsol Google Cloud
Klik:
- Buat atau pilih project.
- Aktifkan API Pub/Sub untuk project tersebut.
Anda dapat melihat dan mengelola resource ini kapan saja di Konsol Google Cloud.
- Menginstal Google Cloud CLI.
-
Untuk initialize gcloud CLI, jalankan perintah berikut:
gcloud init
Menggunakan Antarmuka Command Line gcloud
Cara termudah untuk menggunakan gcloud adalah di Cloud Shell . Anda juga dapat menggunakan alat command line yang disertakan dengan Google Cloud CLI. Prasyarat penyiapan terpenuhi secara otomatis untuk gcloud CLI jika Anda membuat instance mesin Compute Engine baru dengan cakupan akses, termasuk semua Cloud API dan image Debian default. Cara termudah untuk membuatnya adalah melalui UI Compute Engine. Di bagian selanjutnya dari dokumen ini, kami akan mengasumsikan bahwa Anda menggunakan salah satu alat command line ini.
Untuk mengetahui informasi lebih lanjut cara menggunakan gcloud, lihat panduan memulai gcloud.
Baca juga bagian gcloud pubsub di referensi gcloud untuk mengetahui daftar lengkap perintah gcloud
Pub/Sub.
Membuat dan Mencari Snapshot
Buat topik dan langganan. Untuk interaktivitas yang lebih baik, gunakan batas waktu konfirmasi yang singkat:
gcloud pubsub topics create seek-demo-topic gcloud pubsub subscriptions create seek-demo-sub --topic=seek-demo-topic --ack-deadline=10
Sejauh ini, tidak ada pesan dalam langganan yang dikonfirmasi. Ambil status ini dengan membuat snapshot:
gcloud pubsub snapshots create my-snapshot --subscription=seek-demo-sub gcloud pubsub snapshots list
Sekarang publikasikan, tarik, dan konfirmasi pesan:
gcloud pubsub topics publish seek-demo-topic --message 'hello, world' gcloud pubsub subscriptions pull --auto-ack seek-demo-sub
Perhatikan bahwa pull berikutnya tidak menghasilkan pesan baru (beberapa duplikat sementara memungkinkan):
gcloud pubsub subscriptions pull --auto-ack seek-demo-sub
Anda dapat memulihkan pesan dengan mencari langganan ke snapshot. Perlu diperhatikan bahwa pesan mungkin tidak langsung dikirimkan: Pub/Sub tidak menjamin latensi pengiriman pesan. Namun, yang dijamin adalah bahwa pesan yang dipertahankan dalam snapshot pada akhirnya akan dikirim setidaknya satu kali:
gcloud pubsub subscriptions seek seek-demo-sub --snapshot=my-snapshot gcloud pubsub subscriptions pull seek-demo-sub --auto-ack
Perhatikan bahwa Anda dapat mencari langganan lain ke snapshot yang sama, selama topik langganan sama dengan topik snapshot:
gcloud pubsub subscriptions create seek-demo-sub2 --topic=seek-demo-topic --ack-deadline=10 gcloud pubsub subscriptions seek seek-demo-sub2 --snapshot=my-snapshot
Menarik dari seek-demo-sub2
sekarang akan menghasilkan pesan yang dipublikasikan sebelum seek-demo-sub2
dibuat:
gcloud pubsub subscriptions pull seek-demo-sub2 --auto-ack
Setelah selesai membuat snapshot, bersihkan:
gcloud pubsub snapshots delete my-snapshot
Cari ke stempel waktu
Cara lain untuk memutar ulang pesan yang telah dikonfirmasi adalah dengan mencari stempel waktu. Untuk mencari stempel waktu, Anda harus terlebih dahulu mengonfigurasi langganan untuk
mempertahankan pesan yang dikonfirmasi menggunakan retain-acked-messages
. Jika retain-acked-messages
ditetapkan, Pub/Sub akan mempertahankan pesan yang dikonfirmasi selama 7 hari.
Anda hanya perlu melakukan langkah ini jika ingin mencari stempel waktu, bukan snapshot.
gcloud pubsub subscriptions update seek-demo-sub --retain-acked-messages
Sekarang publikasikan, tarik, dan konfirmasi pesan:
gcloud pubsub topics publish seek-demo-topic --message 'hello, world' gcloud pubsub subscriptions pull --auto-ack seek-demo-sub
Pull berikutnya seharusnya tidak menampilkan pesan:
gcloud pubsub subscriptions pull seek-demo-sub
Sekarang, cari kembali langganan ke masa lalu untuk memulihkan pesan. Perhatikan bahwa flag aritmetika tanggal berbeda antara versi GNU dan BSD (MacOS) dari perintah date:
export TS_FORMAT=%Y-%m-%dT%H:%M:%SZ gcloud pubsub subscriptions seek seek-demo-sub --time=$(date -u -d '-10 min' +$TS_FORMAT)
Pull berikutnya akan menghasilkan pesan lagi:
gcloud pubsub subscriptions pull --auto-ack seek-demo-sub
Anda juga dapat menggunakan fitur cari untuk melewati pengiriman semua pesan yang dipublikasikan sebelum waktu tertentu, seperti waktu saat ini. Untuk melakukannya, cari langganan ke waktu saat ini untuk menandainya sebagai dikonfirmasi di semua pesan sebelumnya:
gcloud pubsub topics publish seek-demo-topic --message 'hello, world' gcloud pubsub subscriptions seek seek-demo-sub --time=$(date -u +$TS_FORMAT)
Setelah beberapa penundaan penerapan (~60 detik), pesan tidak akan lagi dikirimkan. Anda dapat memeriksanya dengan menjalankan perintah pull berulang kali tanpa mengonfirmasi pesannya:
gcloud pubsub subscriptions pull seek-demo-sub
Menggunakan Konsol Cloud
Anda dapat membuat snapshot, atau mencari snapshot yang ada, di halaman detail langganan Cloud Console. Untuk aturan penamaan snapshot, lihat Nama resource.
Membuat snapshot
Di konsol Google Cloud, buka halaman Langganan Pub/Sub.
Pilih langganan dari daftar.
Klik Create snapshot.
Masukkan ID untuk snapshot, lalu klik Buat untuk menyimpannya.
Snapshot dapat dilihat di halaman snapshot pada Konsol Google Cloud. Anda juga dapat mengelola snapshot di halaman detail masing-masing topik.
Memutar ulang langganan
Dialog Replay messages memungkinkan Anda mencari ke titik waktu sebelumnya atau snapshot yang disimpan. Untuk membuka dialog:
Di konsol Google Cloud, buka halaman Langganan Pub/Sub.
Pilih langganan dari daftar.
Klik Putar ulang pesan.
Di bagian Cari, pilih Ke titik waktu sebelumnya atau Ke snapshot, lalu pilih titik waktu atau ringkasan yang akan dicari.
Klik Cari untuk memutar ulang pesan.
Bagaimana hasilnya?
Perlu diperhatikan bahwa resource dan link tambahan tersedia di halaman dukungan Pub/Sub.