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 perlu memutar ulang pesan yang direspons, misalnya, jika Anda melakukan respons yang salah. Kemudian, Anda dapat menggunakan fitur Cari untuk menandai pesan yang sebelumnya dikonfirmasi sebagai tidak dikonfirmasi, dan memaksa Pub/Sub untuk mengirim ulang pesan tersebut. Anda juga dapat menggunakan pencarian untuk menghapus pesan yang tidak direspons dengan mengubah statusnya menjadi direspons.
Cari snapshot atau cari stempel waktu untuk memutar ulang pesan dalam langganan. Panduan ini menunjukkan contoh cara memutar ulang pesan Pub/Sub yang sebelumnya diakui menggunakan pencarian.
Jika ingin mengikuti panduan langkah demi langkah untuk tugas ini langsung di Konsol Google Cloud, klik Pandu saya:
Sebelum memulai
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
Set up a Google Cloud console project.
Click to:
- Create or select a project.
- Enable the Pub/Sub API for that project.
You can view and manage these resources at any time in the Google Cloud console.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
Set up a Google Cloud console project.
Click to:
- Create or select a project.
- Enable the Pub/Sub API for that project.
You can view and manage these resources at any time in the Google Cloud console.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
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 yang mencakup semua Cloud API dan image Debian default. Cara termudah untuk membuatnya adalah melalui UI Compute Engine. Untuk bagian selanjutnya dalam dokumen ini, kami akan mengasumsikan bahwa Anda menggunakan salah satu alat command line ini.
Untuk mengetahui informasi selengkapnya tentang penggunaan gcloud, lihat panduan memulai gcloud.
Lihat juga bagian gcloud pubsub di
referensi gcloud
untuk mengetahui daftar lengkap perintah gcloud
Pub/Sub.
Membuat dan Memutar ke Snapshot
Buat topik dan langganan. Untuk interaktivitas yang lebih baik, gunakan batas waktu respons 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. Rekam 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 mungkin terjadi):
gcloud pubsub subscriptions pull --auto-ack seek-demo-sub
Anda dapat memulihkan pesan dengan mencari langganan ke snapshot. Perhatikan bahwa pesan mungkin tidak dikirim secara instan: Pub/Sub tidak menjamin latensi pengiriman pesan. Namun, yang dijamin adalah pesan yang disimpan dalam snapshot pada akhirnya akan dikirim setidaknya sekali:
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
Mengambil dari seek-demo-sub2
kini akan menghasilkan pesan yang dipublikasikan sebelum
seek-demo-sub2
dibuat:
gcloud pubsub subscriptions pull seek-demo-sub2 --auto-ack
Setelah selesai menggunakan snapshot, bersihkan:
gcloud pubsub snapshots delete my-snapshot
Mencari stempel waktu
Cara lain untuk memutar ulang pesan yang telah dikonfirmasi adalah dengan mencari
stempel waktu. Untuk mencari stempel waktu, Anda harus mengonfigurasi langganan terlebih dahulu untuk
mempertahankan pesan yang diakui menggunakan retain-acked-messages
. Jika
retain-acked-messages
ditetapkan, Pub/Sub akan menyimpan 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 tidak akan menampilkan pesan:
gcloud pubsub subscriptions pull seek-demo-sub
Sekarang, cari langganan kembali ke waktu yang tepat untuk memulihkan pesan. Perhatikan bahwa flag aritmetika tanggal berbeda antara versi perintah tanggal GNU dan BSD (MacOS):
export TS_FORMAT=%Y-%m-%dT%H:%M:%SZ gcloud pubsub subscriptions seek seek-demo-sub --time=$(date -u -d '-10 min' +$TS_FORMAT)
Untuk mengetahui informasi selengkapnya tentang format waktu yang didukung, lihat tanggal dan waktu topik gcloud.
Pull berikutnya akan menampilkan pesan lagi:
gcloud pubsub subscriptions pull --auto-ack seek-demo-sub
Anda juga dapat menggunakan pencarian untuk melewati pengiriman semua pesan yang dipublikasikan sebelum waktu tertentu, seperti waktu saat ini. Untuk melakukannya, cari langganan ke waktu saat ini untuk menandai semua pesan sebelumnya sebagai ditanggapi:
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 propagasi (~60 detik), pesan tidak akan lagi dikirim. Anda dapat memeriksanya dengan berulang kali menjalankan perintah pull tanpa mengonfirmasi pesan:
gcloud pubsub subscriptions pull seek-demo-sub
Menggunakan Cloud Console
Anda dapat membuat snapshot, atau mencari snapshot yang ada, di halaman detail langganan Konsol Cloud. 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 Create untuk menyimpan.
Snapshot dapat dilihat di halaman snapshot di konsol Google Cloud. Anda juga dapat mengelola snapshot di halaman detail setiap topik.
Memutar ulang langganan
Dialog Putar ulang pesan 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 snapshot yang akan dicari.
Klik Cari untuk memutar ulang pesan.
Bagaimana hasilnya?
Perhatikan bahwa referensi dan link tambahan tersedia di halaman dukungan Pub/Sub.