Halaman ini menunjukkan cara memulai dan melacak operasi pencarian untuk langganan Lite.
Fitur pencarian Pub/Sub Lite memungkinkan Anda memutar ulang dan menghapus pesan secara permanen. Ini memiliki kasus penggunaan yang sama dengan pencarian 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 pencarian Pub/Sub Lite dimulai secara out-of-band (yaitu, dari Google Cloud CLI atau Pub/Sub Lite API terpisah) dan disebarkan ke pelanggan. Pelanggan online akan diberi tahu tentang pencarian dan reaksi saat mereka sedang live. Pelanggan offline akan bereaksi terhadap pencarian tersebut setelah online.
Anda harus menentukan lokasi target untuk pencarian, yang mungkin merupakan salah satu hal berikut:
- Awal backlog pesan: Memutar ulang semua pesan yang disimpan. Perhatikan bahwa jumlah backlog yang tersedia ditentukan oleh periode retensi pesan dan kapasitas penyimpanan topik Lite.
- Akhir dari backlog pesan: Menghapus pesan dengan melewati semua pesan yang saat ini dipublikasikan.
- Stempel waktu publikasi: Mencari pesan pertama dengan stempel waktu publikasi (yang dihasilkan server) 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 ada di masa mendatang.
- Stempel waktu peristiwa: Mencari pesan pertama dengan stempel waktu peristiwa (ditentukan oleh 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 diberikan oleh pengguna, pesan berikutnya mungkin memiliki stempel waktu peristiwa yang lebih singkat 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 pencarian 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 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
PROJECT_NUMBER: nomor project 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 RFC 3339 UTC, dengan resolusi nanodetik dan maksimal 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 propagasi pencari di bawah jika Anda perlu mengetahui kapan pelanggan 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 jika Pub/Sub Lite digunakan dengan Apache Beam atau Apache Spark karena sistem ini melakukan pelacakan offsetnya sendiri dalam partisi. Solusinya adalah menguras, 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 propagasi pencari
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 disebarkan ke pelanggan (jika klien didukung, seperti di atas). Operasi tersebut melacak propagasi ini dan selesai setelah pelanggan bereaksi terhadap pencarian, untuk semua partisi.
Jika pelanggan online, mungkin perlu waktu hingga 30 detik bagi mereka untuk menerima notifikasi pencari. Notifikasi pencari dikirim secara independen 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 pencari sebelumnya belum selesai diterapkan ke pelanggan, pemanggilan pencari akan dibatalkan dan digantikan oleh operasi pencarian baru. Metadata operasi pencarian akan berakhir setelah 30 hari, sehingga akan membatalkan semua operasi pencarian yang belum selesai.
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 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, ... }
Operasi pencarian listingan
Operasi pencarian yang sudah selesai dan aktif dapat dicantumkan menggunakan Google Cloud CLI, atau Pub/Sub Lite API.
gcloud
Untuk mencantumkan operasi Lite dalam sebuah 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: operasi filter menurut langganan Lite
DONE:
true
untuk hanya menyertakan operasi 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 sebuah 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 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", ... } ] }