Halaman ini menjelaskan cara menggunakan Pub/Sub di aplikasi Java yang dibuat dengan Spring Framework.
Spring Cloud GCP memiliki beberapa modul untuk mengirim pesan ke topik Pub/Sub dan menerima pesan dari langganan Pub/Sub menggunakan Spring Framework. Anda dapat menggunakan modul ini secara terpisah atau menggabungkannya untuk kasus penggunaan yang berbeda:
- Spring Cloud GCP Pub/Sub Starter memungkinkan Anda mengirim dan menerima pesan menggunakan class helper dan memanggil library klien Java Pub/Sub untuk skenario lanjutan.
- Adaptor Saluran Integrasi Spring untuk Pub/Sub memungkinkan Anda menghubungkan Saluran Pesan Integrasi Spring dengan Pub/Sub.
- Spring Cloud Stream Binder untuk Pub/Sub memungkinkan Anda menggunakan Pub/Sub sebagai middleware pesan di aplikasi Spring Cloud Stream.
CATATAN: Library Spring Cloud GCP tidak memberikan akses ke AckReplyConsumerWithResponse, yang merupakan modul yang diperlukan untuk menerapkan fitur exactly-once menggunakan library klien Java.
Sebelum memulai
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
Siapkan project Konsol Google Cloud
Klik:
- Buat atau pilih project.
- Aktifkan API Pub/Sub untuk project tersebut.
- Buat akun layanan.
- Download kunci pribadi sebagai JSON.
Anda dapat melihat dan mengelola resource ini kapan saja di Konsol Google Cloud.
-
Tetapkan variabel lingkungan
GOOGLE_APPLICATION_CREDENTIALS
ke jalur file JSON yang berisi kredensial Anda. Variabel ini hanya berlaku untuk sesi shell Anda saat ini. Jadi, jika Anda membuka sesi baru, tetapkan variabel kembali. -
Siapkan project Konsol Google Cloud
Klik:
- Buat atau pilih project.
- Aktifkan API Pub/Sub untuk project tersebut.
- Buat akun layanan.
- Download kunci pribadi sebagai JSON.
Anda dapat melihat dan mengelola resource ini kapan saja di Konsol Google Cloud.
-
Tetapkan variabel lingkungan
GOOGLE_APPLICATION_CREDENTIALS
ke jalur file JSON yang berisi kredensial Anda. Variabel ini hanya berlaku untuk sesi shell Anda saat ini. Jadi, jika Anda membuka sesi baru, tetapkan variabel kembali. - Tetapkan variabel lingkungan
GOOGLE_CLOUD_PROJECT
ke project ID Google Cloud Anda.
Menggunakan Spring Cloud GCP Pub/Sub Starter
Modul Spring Cloud GCP Pub/Sub Starter menginstal library klien Java Pub/Sub menggunakan modul Spring Cloud GCP Pub/Sub. Anda dapat memanggil Pub/Sub API dari aplikasi Spring menggunakan class yang disediakan oleh Spring Cloud GCP Pub/Sub Starter atau library klien Java Pub/Sub. Jika menggunakan class yang disediakan Spring Cloud GCP Pub/Sub Starter, Anda dapat mengganti konfigurasi Pub/Sub default.
Menginstal modul
Untuk menginstal modul Spring Cloud GCP Pub/Sub Starter, tambahkan dependensi ini ke file pom.xml
Anda:
Artefak Spring Cloud GCP Pub/Sub Starter:
Operasi yang didukung
Modul Pemicu Pub/Sub Spring Cloud GCP menyertakan class berikut:
PubSubAdmin
untuk operasi administratif:- Membuat topik dan langganan.
- Mendapatkan topik dan langganan.
- Mencantumkan topik dan langganan.
- Menghapus topik dan langganan.
- Mendapatkan dan menetapkan batas waktu konfirmasi pada langganan.
PubSubTemplate
untuk mengirim dan menerima pesan:- Memublikasikan pesan ke topik.
- Menarik pesan secara sinkron dari langganan.
- Menarik pesan secara asinkron dari langganan.
- Mengonfirmasi pesan.
- Ubah batas waktu konfirmasi.
- Mengonversi pesan Pub/Sub menjadi Plain Old Java Objects (POJO).
Menggunakan adaptor saluran Spring Integration
Jika aplikasi Spring Anda menggunakan saluran pesan Spring Integration, Anda dapat merutekan pesan antara saluran pesan dan Pub/Sub menggunakan adaptor saluran.
- Adaptor saluran masuk meneruskan pesan dari langganan Pub/Sub ke saluran pesan.
- Adaptor saluran keluar memublikasikan pesan dari saluran pesan ke topik Pub/Sub.
Menginstal modul
Untuk menginstal modul bagi adaptor saluran Spring Integration, tambahkan kode berikut ke file pom.xml
Anda:
Artefak Spring Cloud GCP Pub/Sub Starter dan Spring Integration Core:
Menerima pesan dari Pub/Sub
Untuk menerima pesan dari langganan Pub/Sub di aplikasi Spring, gunakan adaptor saluran masuk. Adaptor saluran masuk mengonversi pesan Pub/Sub masuk menjadi POJO, lalu meneruskan POJO ke saluran pesan.
Contoh di atas menggunakan bean Spring dan resource Pub/Sub berikut:
- Bean saluran pesan bernama
inputMessageChannel
. - Bean adaptor saluran masuk bernama
inboundChannelAdapter
dari jenisPubSubInboundChannelAdapter
. - ID langganan Pub/Sub bernama
sub-one
.
inboundChannelAdapter
secara asinkron mengambil pesan dari sub-one
menggunakan PubSubTemplate
dan mengirim pesan ke inputMessageChannel
.
inboundChannelAdapter
menetapkan mode konfirmasi ke MANUAL
sehingga
aplikasi dapat mengonfirmasi pesan setelah memprosesnya. Mode
konfirmasi default dari jenis PubSubInboundChannelAdapter
adalah AUTO
.
Bean ServiceActivator
messageReceiver
mencatat setiap pesan yang masuk ke
inputMessageChannel
ke output standar, lalu mengonfirmasi pesan tersebut.
Memublikasikan pesan ke Pub/Sub
Untuk memublikasikan pesan dari saluran pesan ke topik Pub/Sub, gunakan adaptor saluran keluar. Adaptor saluran keluar mengonversi POJO menjadi pesan Pub/Sub, lalu mengirim pesan ke topik Pub/Sub.
Contoh di atas menggunakan bean Spring dan resource Pub/Sub berikut:
- Bean saluran pesan bernama
inputMessageChannel
. - Bean adaptor saluran keluar bernama
messageSender
dari jenisPubSubMessageHandler
. - ID topik Pub/Sub bernama
topic-two
.
Bean ServiceActivator
menerapkan logika di messageSender
ke setiap
pesan di inputMessageChannel
.
PubSubMessageHandler
di messageSender
memublikasikan pesan di
inputMessageChannel
menggunakan PubSubTemplate
. PubSubMessageHandler
memublikasikan pesan ke topik Pub/Sub topic-two
.
Menggunakan Spring Cloud Stream Binder
Untuk memanggil Pub/Sub API di aplikasi Spring Cloud Stream, gunakan modul Spring Cloud GCP Pub/Sub Stream Binder.
Menginstal modul
Untuk menginstal modul Spring Cloud Stream Binder, tambahkan kode berikut ke file pom.xml
Anda:
Artefak Spring Cloud Stream Binder:
Menerima pesan dari Pub/Sub
Untuk menggunakan aplikasi sebagai sink peristiwa, konfigurasikan binder input dengan menentukan hal berikut:
Bean
Consumer
yang menentukan logika penanganan pesan. Misalnya, beanConsumer
berikut diberi namareceiveMessageFromTopicTwo
:ID topik Pub/Sub dalam file konfigurasi
application.properties
. Misalnya, file konfigurasi berikut menggunakan ID topik Pub/Sub bernamatopic-two
:
Kode contoh menerima pesan dari Pub/Sub. Contoh ini melakukan hal berikut:
- Menemukan ID topik Pub/Sub
topic-two
di tujuan binding input diapplication.properties
. - Membuat langganan Pub/Sub ke
topic-two
. - Menggunakan nama binding
receiveMessageFromTopicTwo-in-0
untuk menemukan beanConsumer
bernamareceiveMessageFromTopicTwo
. - Mencetak pesan masuk ke output standar dan otomatis mengonfirmasinya.
Memublikasikan pesan ke Pub/Sub
Untuk menggunakan aplikasi Anda sebagai sumber peristiwa, konfigurasikan binder output dengan menentukan hal berikut:
Bean
Supplier
yang menentukan asal pesan dalam aplikasi Anda. Misalnya, beanSupplier
berikut diberi namasendMessageToTopicOne
:ID topik Pub/Sub dalam file konfigurasi
application.properties
. Misalnya, file konfigurasi berikut menggunakan ID topik Pub/Sub bernamatopic-one
:
Kode contoh memublikasikan pesan ke Pub/Sub. Contoh ini melakukan hal berikut:
- Menemukan ID topik Pub/Sub
topic-one
di tujuan binding output diapplication.properties
. - Menggunakan nama binding
sendMessageToTopicOne-out-0
untuk menemukan beanSupplier
bernamasendMessageToTopicOne
. - Mengirim pesan bernomor ke
topic-one
setiap 10 detik.