Halaman ini menjelaskan cara memublikasikan pesan ke topik Lite. Anda dapat memublikasikan pesan dengan library klien Pub/Sub Lite untuk Java.
Setelah memublikasikan pesan dan membuat langganan Lite ke topik Lite, Anda dapat menerima pesan dari langganan Lite.
Format pesan
Pesan terdiri dari kolom yang berisi metadata dan data pesan. Tentukan salah satu dari hal berikut dalam pesan:
- Data pesan
- Kunci pengurutan
- Waktu acara
- Atribut dengan metadata tambahan
Library klien akan otomatis menetapkan pesan ke partisi, dan layanan Pub/Sub Lite akan menambahkan kolom berikut ke pesan tersebut:
- ID pesan yang unik dalam partisi
- Stempel waktu saat layanan Pub/Sub Lite menyimpan pesan dalam partisi
Memublikasikan pesan
Untuk memublikasikan pesan, minta koneksi streaming ke topik Lite, lalu kirim pesan melalui koneksi streaming.
Contoh berikut menunjukkan cara memublikasikan pesan ke topik Lite:
gcloud
Perintah ini memerlukan Python 3.6 atau yang lebih baru, dan harus menginstal paket Python grpcio. Untuk pengguna MacOS, Linux, dan Cloud Shell, jalankan:
sudo pip3 install grpcio
export CLOUDSDK_PYTHON_SITEPACKAGES=1
Untuk memublikasikan pesan, gunakan perintah gcloud pubsub lite-topics publish:
gcloud pubsub lite-topics publish TOPIC_ID \
--location=LITE_LOCATION \
--message=MESSAGE_DATA
Ganti kode berikut:
- TOPIC_ID: ID topik Lite
- LITE_LOCATION: lokasi topik Lite
- MESSAGE_DATA: string dengan data pesan
Go
Sebelum menjalankan contoh ini, ikuti petunjuk penyiapan Go di Library Klien Pub/Sub Lite.
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.
Library klien secara asinkron mengirim pesan dan menangani error. Jika terjadi error, library klien akan mengirim kembali pesan tersebut.
- Layanan Pub/Sub Lite menutup streaming.
- Library klien akan melakukan buffering pesan dan menghubungkan kembali koneksi ke topik Lite.
- Library klien mengirim pesan secara berurutan.
Setelah Anda memublikasikan pesan, layanan Pub/Sub Lite akan menyimpan pesan tersebut dalam partisi dan menampilkan ID pesan kepada penerbit.
Menggunakan kunci pengurutan
Jika pesan memiliki kunci pengurutan yang sama, library klien akan menetapkan pesan ke partisi yang sama. Kunci pengurutan harus berupa string maksimal 1.024 byte.
Kunci pengurutan ada di
kolom key
pesan.
Anda dapat menetapkan kunci pengurutan dengan library klien.
gcloud
Perintah ini memerlukan Python 3.6 atau yang lebih baru, dan harus menginstal paket Python grpcio. Untuk pengguna MacOS, Linux, dan Cloud Shell, jalankan:
sudo pip3 install grpcio
export CLOUDSDK_PYTHON_SITEPACKAGES=1
Untuk memublikasikan pesan, gunakan perintah gcloud pubsub lite-topics publish:
gcloud pubsub lite-topics publish TOPIC_ID \
--location=LITE_LOCATION \
--ordering-key=ORDERING_KEY \
--message=MESSAGE_DATA
Ganti kode berikut:
- TOPIC_ID: ID topik Lite
- LITE_LOCATION: lokasi topik Lite
- ORDERING_KEY: string yang digunakan untuk menetapkan pesan ke partisi
- MESSAGE_DATA: string dengan data pesan
Go
Sebelum menjalankan contoh ini, ikuti petunjuk penyiapan Go di Library Klien Pub/Sub Lite.
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.
Anda dapat mengirim beberapa pesan ke partisi yang sama menggunakan kunci pengurutan, sehingga pelanggan akan menerima pesan secara berurutan. Library klien mungkin menetapkan beberapa kunci pengurutan ke partisi yang sama.
Menyetel waktu acara
Anda dapat menggunakan waktu peristiwa untuk memublikasikan pesan Lite. Waktu peristiwa adalah atribut khusus yang dapat ditambahkan ke pesan Anda.
Anda dapat menetapkan stempel waktu peristiwa dengan library klien atau gCloud CLI.
Perintah ini memerlukan Python 3.6 atau yang lebih baru, dan harus menginstal paket Python grpcio. Untuk pengguna MacOS, Linux, dan Cloud Shell, jalankan:
sudo pip3 install grpcio
export CLOUDSDK_PYTHON_SITEPACKAGES=1
Untuk memublikasikan pesan, gunakan perintah gcloud pubsub lite-topics publish:
gcloud pubsub lite-topics publish TOPIC_ID \
--location=LITE_LOCATION \
--event-time=EVENT_TIME \
--message=MESSAGE_DATA
Ganti kode berikut:
TOPIC_ID: ID topik Lite
LITE_LOCATION: lokasi topik Lite
EVENT_TIME: waktu peristiwa yang ditentukan pengguna. Untuk mengetahui informasi selengkapnya tentang format waktu, jalankan
gcloud topic datetimes
.MESSAGE_DATA: string dengan data pesan
Menggunakan atribut
Atribut pesan adalah key-value pair dengan metadata tentang pesan. Atribut dapat berupa string teks atau byte.
Atribut ini ada di
kolom attributes
pesan. Anda dapat menetapkan atribut dengan library klien.
gcloud
Perintah ini memerlukan Python 3.6 atau yang lebih baru, dan harus menginstal paket Python grpcio. Untuk pengguna MacOS, Linux, dan Cloud Shell, jalankan:
sudo pip3 install grpcio
export CLOUDSDK_PYTHON_SITEPACKAGES=1
Untuk memublikasikan pesan, gunakan perintah gcloud pubsub lite-topics publish:
gcloud pubsub lite-topics publish TOPIC_ID \
--location=LITE_LOCATION \
--message=MESSAGE_DATA \
--attribute=KEY=VALUE,...
Ganti kode berikut:
- TOPIC_ID: ID topik Lite
- LITE_LOCATION: lokasi topik Lite
- MESSAGE_DATA: string dengan data pesan
- KEY: kunci atribut pesan
- VALUE: nilai untuk kunci atribut pesan
Go
Sebelum menjalankan contoh ini, ikuti petunjuk penyiapan Go di Library Klien Pub/Sub Lite.
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.
Atribut dapat menunjukkan cara memproses pesan. Pelanggan dapat mengurai kolom attributes
pesan dan memproses pesan sesuai dengan atributnya.
Mengelompokkan pesan
Library klien memublikasikan pesan dalam beberapa batch. Batch yang lebih besar menggunakan lebih sedikit resource komputasi, tetapi akan meningkatkan latensi. Anda dapat mengubah ukuran tumpukan dengan setelan pengelompokan.
Tabel berikut mencantumkan setelan pengelompokan yang dapat Anda konfigurasi:
Setelan | Deskripsi | Default |
---|---|---|
Ukuran permintaan | Ukuran maksimum batch, dalam byte. | 3,5 MiB |
Jumlah pesan | Jumlah maksimum pesan dalam satu batch. | 1.000 pesan |
Penundaan publikasi | Jumlah waktu, dalam milidetik, antara menambahkan pesan ke batch dan mengirim batch ke topik Lite. | 50 milidetik |
Anda dapat mengonfigurasi setelan pengelompokan dengan library klien.
Go
Sebelum menjalankan contoh ini, ikuti petunjuk penyiapan Go di Library Klien Pub/Sub Lite.
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.
Saat aplikasi penayang dimulai, library klien akan membuat batch untuk setiap partisi dalam topik Lite. Misalnya, jika topik Lite memiliki dua partisi, penayang akan membuat dua batch dan mengirim setiap batch ke partisi.
Setelah Anda memublikasikan pesan, library klien akan membuat buffer pesan tersebut hingga batch tersebut melebihi ukuran permintaan maksimum, jumlah pesan maksimum, atau penundaan publikasi.
Mengurutkan pesan
Topik Lite mengurutkan pesan di setiap partisi berdasarkan waktu publikasi pesan. Untuk menetapkan pesan ke partisi yang sama, gunakan kunci pengurutan.
Pub/Sub Lite mengirimkan pesan dari partisi secara berurutan, dan pelanggan dapat memproses pesan secara berurutan. Untuk mengetahui detailnya, lihat Menerima pesan.
Publikasikan Idempotensi
Library klien Pub/Sub Lite mendukung publikasi idempoten, dari versi berikut:
- java-pubsublite: versi 1.10.0.
- python-pubsublite: versi 1.8.0.
- google-cloud-go: pubsublite versi 1.7.0.
Jika publikasi pesan dicoba lagi karena error jaringan atau server, pesan akan disimpan tepat satu kali. Idempotensi hanya dijamin dalam sesi yang sama; hal tersebut tidak dapat dijamin jika pesan yang sama dipublikasikan ulang menggunakan klien penayang baru. Anda tidak akan dikenai biaya layanan tambahan atau meningkatkan latensi publikasi.
Mengaktifkan atau menonaktifkan publikasi idempoten
Publikasi idempoten diaktifkan secara default di library klien Pub/Sub Lite. Fitur ini dapat dinonaktifkan menggunakan setelan klien penayang dalam library klien masing-masing.
Jika publikasi idempoten diaktifkan, offset yang ditampilkan dalam hasil publikasi
mungkin sebesar -1
. Nilai ini ditampilkan saat pesan diidentifikasi sebagai duplikat dari pesan yang sudah berhasil dipublikasikan, tetapi server tidak memiliki informasi yang memadai untuk menampilkan offset pesan pada waktu publikasi.
Pesan yang diterima oleh pelanggan selalu memiliki offset yang valid.
Pemecahan masalah
Duplikat diterima
Karena idempotensi dibatasi untuk satu sesi, duplikat mungkin akan diterima jika Anda membuat ulang klien penayang untuk memublikasikan pesan yang sama.
Klien pelanggan dapat menerima pesan yang sama beberapa kali jika partisi otomatis ditetapkan ke pelanggan oleh layanan Pub/Sub Lite (setelan default). Pesan mungkin dikirim ulang ke klien pelanggan lain saat terjadi penetapan ulang.
Error penayang
Status untuk sesi penayang adalah sampah yang dikumpulkan di server setelah 7 hari tidak aktif. Jika sesi dilanjutkan setelah jangka waktu ini, klien penayang akan dihentikan dengan pesan error yang mirip dengan "Prakondisi Gagal: Pesan yang diharapkan memiliki nomor urut publikasi dari..." dan tidak menerima pesan baru. Buat ulang klien penayang untuk mengatasi error ini.