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 telah dikonfirmasi, misalnya, jika Anda melakukan konfirmasi yang salah. Kemudian, Anda dapat menggunakan fitur Seek 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 belum dikonfirmasi dengan mengubah statusnya menjadi dikonfirmasi.
Cari snapshot atau cari stempel waktu untuk memutar ulang pesan dalam langganan. Panduan ini menunjukkan contoh cara memutar ulang pesan Pub/Sub yang sebelumnya dikonfirmasi menggunakan pencarian.
Untuk mengikuti panduan langkah demi langkah tugas ini langsung di Google Cloud konsol, 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.
-
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
-
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.
-
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
-
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 dipenuhi 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 paling sederhana 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 Pub/Sub gcloud
.
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 telah 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 penarikan 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 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
kini akan menghasilkan pesan yang dipublikasikan sebelum seek-demo-sub2
dibuat:
gcloud pubsub subscriptions pull seek-demo-sub2 --auto-ack
Setelah Anda selesai menggunakan snapshot, lakukan pembersihan:
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 agar
mempertahankan pesan yang telah dikonfirmasi menggunakan retain-acked-messages
. Jika
retain-acked-messages
disetel, Pub/Sub akan menyimpan pesan yang telah 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
Penarikan berikutnya tidak akan menampilkan pesan:
gcloud pubsub subscriptions pull seek-demo-sub
Sekarang cari langganan kembali ke waktu sebelumnya untuk memulihkan pesan. Perhatikan bahwa tanda aritmatika tanggal berbeda antara versi GNU dan BSD (MacOS) perintah tanggal:
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 gcloud topic datetimes.
Penarikan berikutnya akan menghasilkan pesan lagi:
gcloud pubsub subscriptions pull --auto-ack seek-demo-sub
Anda juga dapat menggunakan pencarian untuk melewati penayangan 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 telah dibaca:
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 menjalankan perintah pull berulang kali tanpa mengonfirmasi pesan:
gcloud pubsub subscriptions pull seek-demo-sub
Menggunakan Konsol Cloud
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 Pub/Sub subscriptions.
Pilih langganan dari daftar.
Klik Create snapshot.
Masukkan ID untuk snapshot, lalu klik Buat 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 Pub/Sub subscriptions.
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.