Halaman ini menjelaskan cara menggunakan Pub/Sub di aplikasi Java yang dibangun 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 berbagai kasus penggunaan:
- Spring Cloud GCP Pub/Sub Starter memungkinkan Anda mengirim dan menerima pesan menggunakan class helper dan memanggil library klien Java Pub/Sub untuk skenario yang lebih canggih.
- Adaptor Saluran Spring Integration untuk Pub/Sub memungkinkan Anda menghubungkan Saluran Pesan Spring Integration dengan Pub/Sub.
- Binder Spring Cloud Stream untuk Pub/Sub memungkinkan Anda 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 menerapkan fitur exactly-once menggunakan library klien Java.
Sebelum memulai
-
Set up a Trusted Cloud console project.
Click to:
- Create or select a project.
- Enable the Pub/Sub API for that project.
- Create a service account.
- Download a private key as JSON.
You can view and manage these resources at any time in the Trusted Cloud console.
-
Set the environment variable
GOOGLE_APPLICATION_CREDENTIALS
to the path of the JSON file that contains your credentials. This variable applies only to your current shell session, so if you open a new session, set the variable again. - Tetapkan variabel lingkungan
GOOGLE_CLOUD_PROJECT
ke ID project Trusted Cloud Anda. Artefak Spring Cloud GCP Pub/Sub Starter:
PubSubAdmin
untuk operasi administratif:- Buat 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.
- Mengambil pesan dari langganan secara asinkron.
- Mengonfirmasi pesan.
- Mengubah batas waktu konfirmasi.
- Mengonversi pesan Pub/Sub menjadi Plain Old Java Objects (POJO).
- Adaptor saluran masuk meneruskan pesan dari langganan Pub/Sub ke saluran pesan.
- Adaptor saluran keluar memublikasikan pesan dari saluran pesan ke topik Pub/Sub.
Artefak Spring Cloud GCP Pub/Sub Starter dan Spring Integration Core:
- Bean saluran pesan bernama
inputMessageChannel
. - Bean adaptor saluran masuk bernama
inboundChannelAdapter
dari jenisPubSubInboundChannelAdapter
. - ID langganan Pub/Sub bernama
sub-one
. - Bean saluran pesan bernama
inputMessageChannel
. - Bean adaptor saluran keluar bernama
messageSender
berjenisPubSubMessageHandler
. - ID topik Pub/Sub bernama
topic-two
. Artefak Spring Cloud Stream Binder:
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
:- Menemukan ID topik Pub/Sub
topic-two
di tujuan binding input dalamapplication.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 secara otomatis mengonfirmasi pesan tersebut.
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
:- 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.
Menggunakan Spring Cloud GCP Pub/Sub Starter
Modul Spring Cloud GCP Pub/Sub Starter menginstal library klien Pub/Sub Java 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 Anda 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 ini ke file pom.xml
Anda:
Operasi yang didukung
Modul Spring Cloud GCP Pub/Sub Starter mencakup class berikut:
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.
Menginstal modul
Untuk menginstal modul untuk adaptor saluran Spring Integration, tambahkan kode berikut ke file pom.xml
Anda:
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:
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 jenis PubSubInboundChannelAdapter
adalah AUTO
.
Bean ServiceActivator
messageReceiver
mencatat setiap pesan yang tiba 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 bean Spring dan resource Pub/Sub berikut:
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 Binder Spring Cloud Stream
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:
Menerima pesan dari Pub/Sub
Untuk menggunakan aplikasi sebagai sink peristiwa, konfigurasi pengikat input dengan menentukan hal berikut:
Contoh kode menerima pesan dari Pub/Sub. Contoh ini melakukan hal berikut:
Memublikasikan pesan ke Pub/Sub
Untuk menggunakan aplikasi Anda sebagai sumber peristiwa, konfigurasi pengikat output dengan menentukan hal berikut:
Contoh kode memublikasikan pesan ke Pub/Sub. Contoh ini melakukan hal berikut: