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 dengan data dan metadata pesan. Tentukan salah satu hal berikut dalam pesan:
- Data pesan
- Kunci pengurutan
- Waktu peristiwa
- Atribut dengan metadata tambahan
Library klien secara otomatis menetapkan pesan ke partisi, dan layanan Pub/Sub Lite menambahkan kolom berikut ke pesan:
- ID pesan yang unik dalam partisi
- Stempel waktu saat layanan Pub/Sub Lite menyimpan pesan di 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 memerlukan paket Python gRPCio untuk diinstal. 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 mengirim pesan dan menangani error secara asinkron. Jika terjadi error, library klien akan mengirim pesan lagi.
- Layanan Pub/Sub Lite menutup streaming.
- Library klien menyimpan pesan dalam buffering dan membuat ulang koneksi ke topik Lite.
- Library klien mengirimkan pesan secara berurutan.
Setelah Anda memublikasikan pesan, layanan Pub/Sub Lite akan menyimpan pesan dalam partisi dan menampilkan ID pesan ke penayang.
Menggunakan kunci pengurutan
Jika pesan memiliki kunci pengurutan yang sama, library klien akan menetapkan pesan ke partisi yang sama. Kunci pengurutan harus berupa string yang maksimal terdiri dari 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 memerlukan paket Python gRPCio untuk diinstal. 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 menerima pesan secara berurutan. Library klien dapat menetapkan beberapa kunci pengurutan ke partisi yang sama.
Menetapkan waktu peristiwa
Anda dapat menggunakan waktu peristiwa untuk memublikasikan pesan Lite. Waktu peristiwa adalah atribut kustom yang dapat Anda tambahkan ke pesan.
Anda dapat menetapkan stempel waktu peristiwa dengan library klien atau gCloud CLI.
Perintah ini memerlukan Python 3.6 atau yang lebih baru, dan memerlukan paket Python gRPCio untuk diinstal. 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 informasi selengkapnya tentang format waktu, jalankan
gcloud topic datetimes
.MESSAGE_DATA: string dengan data pesan
Menggunakan atribut
Atribut pesan adalah pasangan nilai kunci dengan metadata tentang pesan. Atribut dapat berupa string teks atau byte.
Atribut tersebut berada di
kolom attributes
pesan. Anda dapat menetapkan atribut dengan library klien.
gcloud
Perintah ini memerlukan Python 3.6 atau yang lebih baru, dan memerlukan paket Python gRPCio untuk diinstal. 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.
Membuat batch pesan
Library klien memublikasikan pesan dalam batch. Batch yang lebih besar menggunakan lebih sedikit resource komputasi, tetapi meningkatkan latensi. Anda dapat mengubah ukuran batch 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 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 menyimpannya dalam buffering hingga batch melebihi ukuran permintaan maksimum, jumlah maksimum pesan, atau penundaan publikasi.
Mengurutkan pesan
Topik Lite mengurutkan pesan di setiap partisi berdasarkan waktu Anda memublikasikan 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.
Idempotensi Publikasi
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 tersebut akan disimpan tepat sekali. Idempotency hanya dijamin dalam sesi yang sama; hal ini tidak dapat dijamin jika pesan yang sama dipublikasikan ulang menggunakan klien penayang baru. Hal ini tidak menimbulkan 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 di library klien masing-masing.
Jika publikasi idempoten diaktifkan, offset yang ditampilkan dalam hasil publikasi
mungkin -1
. Nilai ini ditampilkan saat pesan diidentifikasi sebagai
duplikat pesan yang telah berhasil dipublikasikan, tetapi server tidak
memiliki informasi yang memadai untuk menampilkan offset pesan pada waktu publikasi.
Pesan yang diterima oleh subscriber selalu memiliki offset yang valid.
Pemecahan masalah
Duplikat yang diterima
Karena idempotensi dibatasi untuk satu sesi, duplikat mungkin diterima jika Anda membuat ulang klien penayang untuk memublikasikan pesan yang sama.
Klien pelanggan mungkin 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 penetapan ulang terjadi.
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 "Prasyarat Gagal: Pesan yang diharapkan memiliki nomor urutan publikasi..." dan tidak menerima pesan baru. Buat ulang klien penayang untuk mengatasi error ini.