Halaman ini menunjukkan cara memulai dan melacak operasi pencarian untuk langganan Lite.
Fitur pencarian Pub/Sub Lite memungkinkan Anda memutar ulang dan menghapus pesan. Fungsi ini memiliki kasus penggunaan yang sama dengan penelusuran Pub/Sub. Tidak seperti Pub/Sub, Anda tidak perlu mengonfigurasi topik atau langganan Lite untuk menggunakan pencarian dan tidak ada biaya tambahan.
Penyebaran pencarian ke pelanggan dapat dilacak menggunakan operasi yang berjalan lama. Ini adalah pola API yang digunakan oleh produk Google Cloud untuk melacak progres tugas yang berjalan lama.
Memulai pencarian
Operasi penelusuran Pub/Sub Lite dimulai di luar band (yaitu, dari Google Cloud CLI atau Pub/Sub Lite API terpisah) dan disebarkan ke pelanggan. Subscriber online akan diberi tahu tentang pencarian dan reaksi saat live. Pelanggan offline akan bereaksi terhadap pencarian setelah mereka online.
Anda harus menentukan lokasi target untuk pencarian, yang dapat berupa salah satu hal berikut:
- Awal antrean pesan: Memutar ulang semua pesan yang dipertahankan. Perhatikan bahwa jumlah backlog yang tersedia ditentukan oleh periode retensi pesan dan kapasitas penyimpanan topik Lite.
- End of message backlog: Menghapus pesan dengan melewati semua pesan yang saat ini dipublikasikan.
- Stempel waktu publikasi: Mencari pesan pertama dengan stempel waktu publikasi (yang dibuat server) yang lebih besar dari atau sama dengan stempel waktu yang ditentukan. Jika pesan tersebut tidak dapat ditemukan, cari ke akhir backlog pesan. Pesan berikutnya dijamin memiliki stempel waktu publikasi yang lebih besar dari atau sama dengan stempel waktu yang ditentukan, dengan pengecualian stempel waktu yang ditentukan yang akan datang.
- Stempel waktu peristiwa: Mencari pesan pertama dengan stempel waktu peristiwa (yang ditentukan pengguna) yang lebih besar dari atau sama dengan stempel waktu yang ditentukan. Jika pesan tersebut tidak dapat ditemukan, cari ke akhir backlog pesan. Karena stempel waktu peristiwa disediakan oleh pengguna, pesan berikutnya mungkin memiliki stempel waktu peristiwa yang lebih rendah dari waktu peristiwa yang ditentukan dan harus difilter oleh klien, jika perlu. Jika pesan tidak memiliki stempel waktu peristiwa yang ditetapkan, stempel waktu publikasinya akan digunakan sebagai penggantian.
Anda dapat memulai penelusuran untuk langganan Lite dengan Google Cloud CLI atau Pub/Sub Lite API.
gcloud
Untuk mencari langganan Lite, gunakan perintah
gcloud pubsub lite-subscriptions seek
:
gcloud pubsub lite-subscriptions seek SUBSCRIPTION_ID \ --location=LITE_LOCATION \ (--publish-time=PUBLISH_TIME | --event-time=EVENT_TIME | \ --starting-offset=STARTING_OFFSET) \ [--async]
Ganti kode berikut:
SUBSCRIPTION_ID: ID langganan Lite
LITE_LOCATION: lokasi langganan Lite
PUBLISH_TIME: stempel waktu publikasi yang akan dicari
EVENT_TIME: stempel waktu peristiwa yang akan dicari
STARTING_OFFSET:
beginning
atauend
Lihat gcloud topic datetimes
untuk mengetahui informasi tentang format waktu.
Jika Anda menentukan flag --async
dan permintaan berhasil, command line
akan menampilkan ID operasi pencarian:
Check operation [projects/PROJECT_NUMBER/locations/LITE_LOCATION/operations/OPERATION_ID] for status.
Gunakan perintah gcloud pubsub lite-operations describe
untuk mendapatkan status operasi.
REST
Untuk mencari langganan Lite, kirim permintaan POST
seperti berikut:
POST https://REGION-pubsublite.googleapis.com/v1/admin/projects/PROJECT_NUMBER/locations/LITE_LOCATION/subscriptions/SUBSCRIPTION_ID:seek Authorization: Bearer $(gcloud auth print-access-token)
Ganti kode berikut:
REGION: region tempat langganan Lite berada
PROJECT_NUMBER: nomor project dari project dengan langganan Lite
LITE_LOCATION: lokasi langganan Lite
SUBSCRIPTION_ID: ID langganan Lite
Untuk mencari ke awal atau akhir backlog pesan, tetapkan kolom berikut dalam isi permintaan:
{ "namedTarget": NAMED_TARGET }
Ganti kode berikut:
- NAMED_TARGET:
TAIL
untuk awal atauHEAD
untuk akhir backlog pesan.
Untuk mencari stempel waktu publikasi, tetapkan kolom berikut dalam isi permintaan:
{ "timeTarget": { "publishTime": TIMESTAMP } }
Tentukan "eventTime"
untuk mencari stempel waktu peristiwa.
Ganti kode berikut:
- TIMESTAMP: Stempel waktu dalam format UTC RFC 3339, dengan resolusi nanodetik dan hingga sembilan digit pecahan. Contoh:
"2014-10-02T15:01:23Z"
dan"2014-10-02T15:01:23.045123456Z"
.
Jika permintaan berhasil, responsnya adalah operasi yang berjalan lama dalam format JSON:
{ "name": projects/PROJECT_NUMBER/locations/LITE_LOCATION/operations/OPERATION_ID, ... }
Go
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Go di Panduan Memulai: Menggunakan Library Klien. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi Pub/Sub Go API.
Java
Sebelum menjalankan contoh ini, ikuti petunjuk penyiapan Java di Library Klien Pub/Sub Lite.
Python
Sebelum menjalankan contoh ini, ikuti petunjuk penyiapan Python di Library Klien Pub/Sub Lite.
Jika permintaan pencarian berhasil, responsnya adalah ID operasi yang berjalan lama. Lihat informasi tentang melacak penyebaran pencarian di bawah jika Anda perlu mengetahui kapan subscriber bereaksi terhadap pencarian.
Klien yang didukung
Operasi pencarian memerlukan pelanggan yang menggunakan library klien Pub/Sub Lite dan versi minimum berikut:
- java-pubsublite: versi 0.15.0.
- java-pubsublite-kafka: versi 0.6.0. Konsumen juga harus mengaktifkan commit otomatis.
- python-pubsublite: versi 0.6.0.
- google-cloud-go: pubsublite versi 0.10.0.
Operasi pencarian tidak berfungsi saat Pub/Sub Lite digunakan dengan Apache Beam atau Apache Spark karena sistem ini melakukan pelacakan offsetnya sendiri dalam partisi. Solusi adalah menghabiskan, mencari, dan memulai ulang alur kerja.
Layanan Pub/Sub Lite dapat mendeteksi klien pelanggan yang
tidak mendukung operasi pencarian (misalnya, versi library klien lama atau
framework yang tidak didukung) dan akan membatalkan pencarian dengan status error
FAILED_PRECONDITION
.
Melacak penyebaran pencarian
Jika ID operasi yang berjalan lama ditampilkan untuk permintaan pencarian awal, ini berarti pencarian berhasil didaftarkan di layanan Pub/Sub Lite dan pada akhirnya akan diterapkan ke pelanggan (jika klien didukung, seperti di atas). Operasi melacak penyebaran ini dan selesai setelah pelanggan bereaksi terhadap pencarian, untuk semua partisi.
Jika subscriber sedang online, mungkin perlu waktu hingga 30 detik untuk menerima notifikasi penelusuran. Notifikasi pencarian dikirim secara terpisah untuk setiap partisi, sehingga partisi mungkin tidak bereaksi terhadap pencarian pada saat yang sama. Jika pelanggan offline, operasi pencarian akan selesai setelah mereka online.
Jika pemanggilan pencarian sebelumnya belum selesai disebarkan ke subscriber, pemanggilan tersebut akan dibatalkan dan diganti dengan operasi pencarian baru. Metadata operasi pencarian berakhir masa berlakunya setelah 30 hari, yang secara efektif membatalkan operasi pencarian yang tidak lengkap.
Status operasi pencarian
Anda bisa mendapatkan status operasi pencarian menggunakan Google Cloud CLI, atau Pub/Sub Lite API.
gcloud
Untuk mendapatkan detail tentang operasi Lite, gunakan perintah
gcloud pubsub lite-operations describe
:
gcloud pubsub lite-operations describe OPERATION_ID \ --location=LITE_LOCATION
Ganti kode berikut:
OPERATION_ID: ID operasi Lite
LITE_LOCATION: lokasi operasi Lite
Jika permintaan berhasil, command line akan menampilkan metadata tentang operasi Lite:
metadata: '@type': type.googleapis.com/google.cloud.pubsublite.v1.OperationMetadata createTime: '2021-01-02T03:04:05Z' target: projects/PROJECT_NUMBER/locations/LITE_LOCATION/subscriptions/SUBSCRIPTION_ID verb: seek name: projects/PROJECT_NUMBER/locations/LITE_LOCATION/operations/OPERATION_ID
REST
Untuk mendapatkan detail tentang operasi Lite, kirim permintaan GET
seperti
berikut:
GET https://REGION-pubsublite.googleapis.com/v1/admin/projects/PROJECT_NUMBER/locations/LITE_LOCATION/operations/OPERATION_ID Authorization: Bearer $(gcloud auth print-access-token)
Ganti kode berikut:
REGION: region tempat operasi Lite berada
PROJECT_NUMBER: nomor project dari project dengan operasi Lite
LITE_LOCATION: lokasi operasi Lite
OPERATION_ID: ID operasi Lite
Jika permintaan berhasil, responsnya adalah operasi yang berjalan lama dalam format JSON:
{ "name": projects/PROJECT_NUMBER/locations/LITE_LOCATION/operations/OPERATION_ID, ... }
Mencantumkan operasi pencarian
Operasi pencarian yang telah selesai dan aktif dapat dicantumkan menggunakan Google Cloud CLI, atau Pub/Sub Lite API.
gcloud
Untuk mencantumkan operasi Lite dalam project, gunakan perintah
gcloud pubsub lite-operations list
:
gcloud pubsub lite-operations list \
--location=LITE_LOCATION \
[--subscription=SUBSCRIPTION] \
[--done=DONE] \
[--limit=LIMIT]
Ganti kode berikut:
LITE_LOCATION: lokasi tempat operasi Lite berada
SUBSCRIPTION: memfilter operasi menurut langganan Lite
DONE:
true
untuk hanya menyertakan operasi yang lengkap,false
untuk hanya menyertakan operasi aktifLIMIT: bilangan bulat untuk membatasi jumlah operasi yang ditampilkan
Jika permintaan berhasil, command line akan menampilkan ringkasan operasi Lite:
OPERATION_ID TARGET CREATE_TIME DONE ERROR_CODE MESSAGE operation2 projects/PROJECT_NUMBER/locations/LITE_LOCATION/subscriptions/SUBSCRIPTION_ID 2021-05-06T07:08:00Z True operation1 projects/PROJECT_NUMBER/locations/LITE_LOCATION/subscriptions/SUBSCRIPTION_ID 2021-01-02T03:04:00Z True
REST
Untuk mencantumkan operasi Lite dalam project, kirim permintaan GET
seperti berikut:
GET https://REGION-pubsublite.googleapis.com/v1/admin/projects/PROJECT_NUMBER/locations/LITE_LOCATION/operations Authorization: Bearer $(gcloud auth print-access-token)
Ganti kode berikut:
REGION: region tempat operasi Lite berada
PROJECT_NUMBER: nomor project dari project dengan operasi Lite
LITE_LOCATION: lokasi tempat operasi Lite berada
Jika permintaan berhasil, responsnya adalah daftar operasi Lite dalam format JSON:
{ "operations": [ { "name": "projects/PROJECT_NUMBER/locations/LITE_LOCATION/operations/OPERATION_ID", ... }, { "name": "projects/PROJECT_NUMBER/locations/LITE_LOCATION/operations/OPERATION_ID", ... } ] }