Spring Cloud adalah kerangka kerja yang digunakan untuk membangun aplikasi berbasis mikro layanan dengan dukungan pesan. Kerangka ini menyediakan solusi untuk penemuan layanan, manajemen konfigurasi, transmisi pesan, dan penyeimbangan beban, sehingga memudahkan pembuatan sistem terdistribusi serta komunikasi antar mikro layanan. Topik ini menjelaskan cara menggunakan Spring Cloud untuk terhubung ke ApsaraMQ for Kafka dalam mengirim dan menerima pesan.
Prasyarat
JDK 1.8 atau versi lebih baru telah diinstal. Untuk informasi lebih lanjut, lihat Unduhan Java.
Maven 2.5 atau versi lebih baru telah diinstal. Untuk informasi lebih lanjut, lihat Mengunduh Apache Maven.
Paket demo telah diunduh dari kafka-spring-stream-demo dan diunggah ke sistem Linux yang telah disiapkan.
Sebuah instance ApsaraMQ for Kafka versi 2.x atau lebih baru telah dibuat. Untuk informasi tentang cara memperbarui versi sebuah instance, lihat Tingkatkan versi instance.
Topik dan grup konsumen telah dibuat pada instance tersebut. Untuk informasi lebih lanjut, lihat Langkah 3: Buat sumber daya.
Lingkungan internet (autentikasi dan enkripsi diperlukan untuk transmisi pesan)
Jika klien Anda terhubung ke instance ApsaraMQ for Kafka melalui Internet, protokol SASL_SSL digunakan untuk autentikasi dan enkripsi. Dalam lingkungan internet, klien menggunakan titik akhir Secure Sockets Layer (SSL) untuk mengakses instance ApsaraMQ for Kafka. Untuk informasi tentang titik akhir, lihat Perbandingan di antara titik akhir.
Dalam contoh ini, paket demo diunggah ke direktori /home/doc/project/aliware-kafka-demos/kafka-spring-stream-demo.
Masuk ke sistem Linux dan jalankan perintah berikut untuk masuk ke direktori /home/doc/project/aliware-kafka-demos/kafka-spring-stream-demo:
cd /home/doc/project/aliware-kafka-demos/kafka-spring-stream-demoJalankan perintah berikut untuk masuk ke direktori file konfigurasi:
cd sasl-ssl/src/main/resources/Jalankan perintah berikut untuk membuka file konfigurasi application.properties dan tentukan pengaturan instance dalam file konfigurasi berdasarkan Parameter:
vi application.properties## Konfigurasikan parameter berikut berdasarkan pengaturan instance Anda: kafka.bootstrap-servers=alikafka-pre-cn-zv**********-1.alikafka.aliyuncs.com:9093,alikafka-pre-cn-zv**********-2.alikafka.aliyuncs.com:9093,alikafka-pre-cn-zv**********-3.alikafka.aliyuncs.com:9093 kafka.consumer.group=test-spring kafka.output.topic.name=test-output kafka.input.topic.name=test-input kafka.ssl.truststore.location=/home/doc/project/aliware-kafka-demos/kafka-spring-stream-demo/sasl-ssl/src/main/resources/kafka.client.truststore.jks ### Konfigurasikan parameter pengikatan untuk mengikat instance ApsaraMQ for Kafka ke Spring Cloud Stream Binder. Pertahankan pengaturan default untuk parameter berikut: spring.cloud.stream.bindings.MyOutput.destination=${kafka.output.topic.name} spring.cloud.stream.bindings.MyOutput.contentType=text/plain spring.cloud.stream.bindings.MyInput.group=${kafka.consumer.group} spring.cloud.stream.bindings.MyInput.destination=${kafka.input.topic.name} spring.cloud.stream.bindings.MyInput.contentType=text/plain ### Binder adalah modul enkapsulasi Spring Cloud untuk perantara pesan. Pertahankan pengaturan default untuk parameter berikut: spring.cloud.stream.kafka.binder.autoCreateTopics=false spring.cloud.stream.kafka.binder.brokers=${kafka.bootstrap-servers} spring.cloud.stream.kafka.binder.configuration.security.protocol=SASL_SSL spring.cloud.stream.kafka.binder.configuration.sasl.mechanism=PLAIN spring.cloud.stream.kafka.binder.configuration.ssl.truststore.location=${kafka.ssl.truststore.location} spring.cloud.stream.kafka.binder.configuration.ssl.truststore.password=KafkaOnsClient ### Jika parameter berikut tidak termasuk dalam demo, tambahkan parameter secara manual. Parameter ini menentukan apakah akan mengaktifkan verifikasi nama host server. Anda dapat mengatur parameter ini ke string kosong untuk menonaktifkan verifikasi nama host server karena Simple Authentication and Security Layer (SASL) digunakan untuk verifikasi identitas. ### Verifikasi nama host server adalah untuk memverifikasi apakah nama host dalam sertifikat SSL root cocok dengan nama host server. Nilai default untuk parameter ini adalah HTTPS. spring.cloud.stream.kafka.binder.configuration.ssl.endpoint.identification.algorithm=Tabel 1. Parameter Parameter
Deskripsi
kafka.bootstrap-servers
Titik akhir dari instance ApsaraMQ for Kafka. Anda dapat memperoleh titik akhir di bagian Endpoint Information halaman Instance Details di Konsol ApsaraMQ for Kafka.
kafka.consumer.group
Grup konsumen yang berlangganan pesan. Anda dapat membuat grup konsumen di halaman Groups di Konsol ApsaraMQ for Kafka. Untuk informasi lebih lanjut, lihat Langkah 3: Buat sumber daya.
kafka.output.topic.name
Topik untuk pesan arah keluar. Program konsol menggunakan topik ini untuk mengirim pesan secara berkala. Isi setiap pesan bersifat tetap. Anda dapat membuat topik di halaman Topics di Konsol ApsaraMQ for Kafka. Untuk informasi lebih lanjut, lihat Langkah 3: Buat sumber daya.
kafka.input.topic.name
Topik untuk pesan arah masuk. Anda dapat menggunakan topik ini untuk mengirim pesan di konsol. Program demo mengonsumsi pesan dan menampilkan pesan dalam log.
kafka.ssl.truststore.location
Lokasi penyimpanan sertifikat SSL root kafka.client.truststore.jks.
Jalankan perintah berikut untuk membuka file kafka_client_jaas.conf dan tentukan nama pengguna dan kata sandi pengguna SASL untuk instance:
vi kafka_client_jaas.confCatatanJika fitur daftar kontrol akses (ACL) dinonaktifkan untuk instance ApsaraMQ for Kafka, Anda dapat memperoleh nama pengguna dan kata sandi pengguna SASL default untuk instance di halaman Instance Details di Konsol ApsaraMQ for Kafka.
Jika fitur ACL diaktifkan untuk instance ApsaraMQ for Kafka, pastikan bahwa pengguna SASL yang Anda gunakan adalah tipe PLAIN dan memiliki izin untuk mengirim dan menerima pesan. Untuk informasi lebih lanjut, lihat Berikan izin kepada pengguna SASL.
KafkaClient { org.apache.kafka.common.security.plain.PlainLoginModule required username="XXX" password="XXX"; };Masuk ke direktori /home/doc/project/aliware-kafka-demos/kafka-spring-stream-demo/sasl-ssl dan jalankan perintah berikut untuk menjalankan demo:
sh run_demo.shJika informasi berikut dikembalikan, program demo berhasil menerima pesan yang dikirim dari program konsol menggunakan topik yang ditentukan dalam kafka.output.topic.name.
Send: hello world !! Send: hello world !! Send: hello world !! Send: hello world !!Masuk ke Konsol ApsaraMQ for Kafka untuk memverifikasi apakah pesan telah dikirim dan diterima.
Periksa apakah topik yang ditentukan dalam kafka.output.topic.name menerima pesan yang dikirim dari program konsol. Untuk informasi lebih lanjut, lihat Kueri pesan.
Kirim pesan menggunakan topik yang ditentukan dalam kafka.input.topic.name dan periksa apakah pesan tersebut ditampilkan dalam log program demo. Untuk informasi lebih lanjut, lihat Kirim pesan.
Lingkungan VPC (autentikasi dan enkripsi tidak diperlukan untuk transmisi pesan)
Jika klien terhubung ke instance ApsaraMQ for Kafka dalam jaringan pribadi virtual (VPC), protokol PLAINTEXT digunakan untuk mentransmisikan pesan tanpa autentikasi atau enkripsi. Dalam lingkungan VPC, klien menggunakan titik akhir default untuk mengakses instance ApsaraMQ for Kafka. Untuk informasi tentang titik akhir, lihat Perbandingan di antara titik akhir.
Dalam contoh ini, paket demo diunggah ke direktori /home/doc/project/aliware-kafka-demos/kafka-spring-stream-demo.
Masuk ke sistem Linux dan jalankan perintah berikut untuk masuk ke direktori /home/doc/project/aliware-kafka-demos/kafka-spring-stream-demo:
cd /home/doc/project/aliware-kafka-demos/kafka-spring-stream-demoJalankan perintah berikut untuk masuk ke direktori file konfigurasi:
cd vpc/src/main/resources/Jalankan perintah berikut untuk membuka file konfigurasi application.properties dan tentukan pengaturan instance dalam file konfigurasi berdasarkan Parameter:
vi application.properties### Konfigurasikan parameter berikut berdasarkan pengaturan instance Anda: kafka.bootstrap-servers=alikafka-pre-cn-zv**********-1-vpc.alikafka.aliyuncs.com:9092,alikafka-pre-cn-zv**********-2-vpc.alikafka.aliyuncs.com:9092,alikafka-pre-cn-zv**********-3-vpc.alikafka.aliyuncs.com:9092 kafka.consumer.group=test-spring kafka.output.topic.name=test-output kafka.input.topic.name=test-inputMasuk ke direktori /home/doc/project/aliware-kafka-demos/kafka-spring-stream-demo/vpc dan jalankan perintah berikut untuk menjalankan demo:
sh run_demo.shInformasi berikut dikembalikan:
Send: hello world !! Send: hello world !! Send: hello world !! Send: hello world !!Masuk ke Konsol ApsaraMQ for Kafka untuk memverifikasi apakah pesan telah dikirim dan diterima.
Periksa apakah topik yang ditentukan dalam kafka.output.topic.name menerima pesan yang dikirim dari program konsol. Untuk informasi lebih lanjut, lihat Kueri pesan.
Kirim pesan menggunakan topik yang ditentukan dalam kafka.input.topic.name dan periksa apakah pesan tersebut ditampilkan dalam log program demo. Untuk informasi lebih lanjut, lihat Kirim pesan.
Referensi
Untuk informasi lebih lanjut tentang kerangka kerja Spring Cloud, lihat Dokumentasi Referensi Spring Cloud Stream.