Dokumen ini memberikan informasi tentang penggunaan kontrol alur dengan pesan yang dipublikasikan ke topik.
Tentang kontrol alur
Klien penerbit dapat mencoba memublikasikan pesan lebih cepat daripada kemampuan klien tersebut dalam mengirim data ke layanan Pub/Sub. Klien dibatasi oleh banyak faktor, termasuk:
- CPU, RAM, dan kapasitas jaringan mesin
- Setelan jaringan, seperti jumlah permintaan yang belum selesai dan bandwidth yang tersedia
- Latensi setiap permintaan publikasi, yang sebagian besar ditentukan oleh koneksi jaringan antara layanan Pub/Sub, klien, dan Trusted Cloud
Jika kecepatan permintaan publikasi melebihi batas ini, permintaan akan terakumulasi dalam memori hingga gagal dengan error DEADLINE_EXCEEDED
. Hal ini terutama mungkin terjadi
jika puluhan ribu pesan dipublikasikan dalam loop, sehingga menghasilkan ribuan
permintaan dalam hitungan milidetik.
Anda dapat mendiagnosis masalah ini dengan memeriksa metrik sisi server di Monitoring. Anda tidak akan dapat melihat permintaan yang gagal dengan DEADLINE_EXCEEDED
, hanya permintaan yang berhasil. Tingkat permintaan yang berhasil memberi tahu Anda kapasitas throughput mesin klien, sehingga memberikan dasar untuk mengonfigurasi kontrol alur.
Untuk mengurangi masalah kecepatan alur, konfigurasi klien penayang Anda dengan kontrol alur untuk membatasi kecepatan permintaan publikasi. Anda dapat mengonfigurasi jumlah maksimum byte yang dialokasikan untuk permintaan yang belum selesai, dan jumlah maksimum pesan yang belum selesai yang diizinkan. Tetapkan batas ini sesuai dengan kapasitas throughput mesin klien Anda.
Sebelum memulai
Sebelum mengonfigurasi alur kerja publikasi, pastikan Anda telah menyelesaikan tugas berikut:
- Pelajari topik dan alur kerja publikasi.
- Buat topik.
Peran yang diperlukan
Untuk mendapatkan izin yang diperlukan guna menggunakan kontrol alur, minta administrator untuk memberi Anda peran IAM Pub/Sub Publisher (roles/pubsub.publisher
) di topik Anda.
Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses ke project, folder, dan organisasi.
Anda mungkin juga bisa mendapatkan izin yang diperlukan melalui peran khusus atau peran bawaan lainnya.
Anda memerlukan izin tambahan untuk membuat atau memperbarui topik dan langganan.
Menggunakan kontrol alur dengan pesan
Kontrol alur penerbit tersedia menggunakan library klien Pub/Sub dalam bahasa berikut:
C++
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan C++ di Panduan memulai: Menggunakan Library Klien. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi Pub/Sub C++ API.
Go
Contoh berikut menggunakan library klien Go Pub/Sub versi utama (v2). Jika Anda masih menggunakan library v1, lihat panduan migrasi ke v2. Untuk melihat daftar contoh kode v1, lihat contoh kode yang tidak digunakan lagi.
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 mencoba contoh ini, ikuti petunjuk penyiapan Java di Panduan memulai: Menggunakan Library Klien. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi Pub/Sub Java API.
Node.js
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Node.js di Panduan memulai: Menggunakan Library Klien. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Node.js Pub/Sub.
Node.js
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Node.js di Panduan memulai: Menggunakan Library Klien. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Node.js Pub/Sub.
Python
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Python di Panduan memulai: Menggunakan Library Klien. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi Pub/Sub Python API.
Ruby
Contoh berikut menggunakan library klien Pub/Sub Ruby v3. Jika Anda masih menggunakan library v2, lihat panduan migrasi ke v3. Untuk melihat daftar contoh kode Ruby v2, lihat contoh kode yang tidak digunakan lagi.
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Ruby di Panduan memulai: Menggunakan Library Klien. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Ruby Pub/Sub.