Halaman ini menjelaskan cara menggunakan Pub/Sub dalam aplikasi Java yang dibangun dengan Framework Spring.
Spring Cloud GCP memiliki beberapa modul untuk mengirim pesan ke topik Pub/Sub dan menerima pesan dari langganan Pub/Sub menggunakan Framework Spring. Anda dapat menggunakan modul-modul ini secara independen 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.
- Dengan Spring Cloud Stream Binder untuk Pub/Sub, Anda dapat menggunakan Pub/Sub sebagai middleware pesan di aplikasi Spring Cloud Stream.
CATATAN: Library Spring Cloud GCP tidak menyediakan akses ke AckReplyConsumerWithResponse, yang merupakan modul yang diperlukan untuk mengimplementasikan fitur tepat satu kali menggunakan library klien Java.
Sebelum memulai
- Login ke akun Google Cloud Anda. Jika Anda baru menggunakan Google Cloud, buat akun untuk mengevaluasi performa produk kami dalam skenario dunia nyata. Pelanggan baru juga mendapatkan kredit gratis senilai $300 untuk menjalankan, menguji, dan men-deploy workload.
-
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 Pub/Sub Java. Jika menggunakan class yang disediakan oleh 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 berikut
ke file pom.xml
Anda:
Artefak Spring Cloud GCP Pub/Sub Starter:
Operasi yang didukung
Modul Spring Cloud GCP Pub/Sub Starter mencakup class berikut:
PubSubAdmin
untuk operasi administratif:- Membuat topik dan langganan.
- Mendapatkan topik dan langganan.
- Mencantumkan topik dan langganan.
- Hapus topik dan langganan.
- Mendapatkan dan menetapkan batas waktu konfirmasi pada langganan.
PubSubTemplate
untuk mengirim dan menerima pesan:- Memublikasikan pesan ke topik.
- Menarik pesan dari langganan secara sinkron.
- Tarik pesan secara asinkron dari langganan.
- Mengonfirmasi pesan.
- Ubah batas waktu konfirmasi.
- Mengonversi pesan Pub/Sub menjadi Objek Java Lama Biasa (POJO).
Menggunakan adaptor saluran Spring Integration
Jika aplikasi Spring 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 adaptor saluran Integrasi Spring, 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 yang masuk menjadi POJO, lalu meneruskan POJO ke saluran pesan.
Contoh di atas menggunakan resource beans Spring dan Pub/Sub berikut:
- Kacang saluran pesan bernama
inputMessageChannel
. - Bean adaptor saluran masuk bernama
inboundChannelAdapter
dari jenisPubSubInboundChannelAdapter
. - ID langganan Pub/Sub yang bernama
sub-one
.
inboundChannelAdapter
secara asinkron menarik 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
.
Kacang ServiceActivator
messageReceiver
mencatat setiap pesan yang masuk di
inputMessageChannel
ke output standar, lalu mengonfirmasi pesan.
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 mengirimkan pesan ke topik Pub/Sub.
Contoh di atas menggunakan resource Spring bean dan Pub/Sub berikut:
- Kacang saluran pesan bernama
inputMessageChannel
. - Bean adaptor saluran keluar bernama
messageSender
dari jenisPubSubMessageHandler
. - ID topik Pub/Sub bernama
topic-two
.
Kacang 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 Binder Aliran Spring Cloud
Untuk memanggil Pub/Sub API di aplikasi Spring Cloud Stream, gunakan modul Spring Cloud GCP Pub/Sub Stream Binder.
Menginstal modul
Untuk menginstal modul Binder Spring Cloud Stream, tambahkan kode berikut ke file pom.xml
Anda:
Artefak Spring Cloud Stream Binder:
Menerima pesan dari Pub/Sub
Untuk menggunakan aplikasi Anda sebagai sink peristiwa, konfigurasikan binder input dengan menetapkan hal berikut:
Bean
Consumer
yang menentukan logika penanganan pesan. Misalnya, bijiConsumer
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 ini menerima pesan dari Pub/Sub. Contoh tersebut 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
yang 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:
Kacang
Supplier
yang menentukan asal pesan dalam aplikasi Anda. Misalnya, bijiSupplier
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 tersebut 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
yang bernamasendMessageToTopicOne
. - Mengirim pesan bernomor ke
topic-one
setiap 10 detik.