Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Tutorial ini menunjukkan kepada Anda cara mengonfigurasi Spring Cloud Stream Binder berbasis Java untuk menggunakan Azure Event Hubs untuk Kafka untuk mengirim dan menerima pesan dengan Azure Event Hubs. Untuk informasi selengkapnya, lihat Gunakan Azure Event Hubs dari aplikasi Apache Kafka
Dalam tutorial ini, kita akan menyertakan dua metode autentikasi: autentikasi Microsoft Entra dan autentikasi Shared Access Signatures (SAS). Tab Passwordless memperlihatkan autentikasi Microsoft Entra dan string Connection memperlihatkan autentikasi SAS.
autentikasi Microsoft Entra adalah mekanisme untuk menyambungkan ke Azure Event Hubs untuk Kafka menggunakan identitas yang ditentukan dalam Microsoft Entra ID. Dengan autentikasi Microsoft Entra, Anda dapat mengelola identitas pengguna database dan layanan Microsoft lainnya di lokasi pusat, yang menyederhanakan manajemen izin.
Autentikasi SAS menggunakan string koneksi namespace Azure Event Hubs Anda untuk akses yang didelegasikan ke Event Hubs for Kafka. Jika Anda memilih untuk menggunakan Tanda Tangan Akses Bersama sebagai kredensial, Anda perlu mengelola string koneksi sendiri.
Prasyarat
Langganan Azure - buat langganan secara gratis.
Java Development Kit (JDK) versi 8 atau yang lebih tinggi.
Apache Maven, versi 3.2 atau lebih tinggi.
cURL atau utilitas HTTP serupa untuk menguji fungsionalitas.
Azure Cloud Shell atau Azure CLI 2.37.0 atau yang lebih tinggi.
Event Hub Azure. Jika Anda tidak memilikinya, buat pusat aktivitas menggunakan portal Azure.
Aplikasi Spring Boot. Jika Anda tidak memilikinya, buat proyek Maven dengan Spring Initializr. Pastikan untuk memilih Maven Project dan, di bawah Dependensi, tambahkan Spring Web, Spring untuk Apache Kafka, dan Cloud Stream dependensi, lalu pilih Java versi 8 atau yang lebih tinggi.
Penting
Spring Boot versi 2.5 atau yang lebih tinggi diperlukan untuk menyelesaikan langkah-langkah dalam tutorial ini.
Menyiapkan kredensial
Azure Event Hubs mendukung penggunaan Microsoft Entra ID untuk mengotorisasi permintaan ke sumber daya Azure Event Hubs. Dengan Microsoft Entra ID, Anda dapat menggunakan kontrol akses berbasis peran Azure (Azure RBAC) untuk memberikan izin kepada prinsipal keamanan, yang mungkin merupakan pengguna atau prinsipal layanan aplikasi.
Jika Anda ingin menjalankan sampel ini secara lokal dengan autentikasi Microsoft Entra, pastikan akun pengguna Anda telah mengautentikasi melalui Azure Toolkit untuk IntelliJ, plugin Akun Visual Studio Code Azure, atau Azure CLI. Selain itu, pastikan akun telah diberikan izin yang memadai.
Catatan
Saat menggunakan koneksi tanpa kata sandi, Anda perlu memberikan akses akun Anda ke sumber daya. Di Azure Event Hubs, tetapkan peran Azure Event Hubs Data Receiver dan Azure Event Hubs Data Sender ke akun Microsoft Entra yang saat ini Anda gunakan. Untuk informasi selengkapnya tentang memberikan peran akses, lihat Menetapkan peran Azure menggunakan portal Azure dan Mengizinkan akses ke sumber daya Event Hubs menggunakan Microsoft Entra ID.
Mengirim dan menerima pesan dari Azure Event Hubs
Dengan pusat aktivitas Azure, Anda dapat mengirim dan menerima pesan menggunakan Spring Cloud Azure.
Untuk menginstal modul Spring Cloud Azure Starter, tambahkan dependensi berikut ke file pom.xml Anda:
Spring Cloud Azure Bill of Materials (BOM):
<dependencyManagement> <dependencies> <dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-dependencies</artifactId> <version>7.2.0</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>Catatan
Jika Anda menggunakan Spring Boot 4.0.x, pastikan untuk mengatur versi ke
spring-cloud-azure-dependencies7.2.0.Jika Anda menggunakan Spring Boot 3.5.x, pastikan untuk mengatur versi ke
spring-cloud-azure-dependencies6.2.0.Jika Anda menggunakan Spring Boot 3.1.x-3.5.x, pastikan untuk mengatur versi ke
spring-cloud-azure-dependencies5.25.0.Jika Anda menggunakan Spring Boot 2.x, pastikan untuk mengatur versi
spring-cloud-azure-dependencieske4.20.0.Bill of Material (BOM) ini harus dikonfigurasi di bagian
<dependencyManagement>dari file pom.xml Anda. Ini memastikan bahwa semua dependensi Spring Cloud Azure menggunakan versi yang sama.Untuk informasi selengkapnya tentang versi yang digunakan untuk BOM ini, lihat Versi Spring Cloud Azure Harus Saya Gunakan.
Artefak Spring Cloud Azure Starter:
<dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-starter</artifactId> </dependency>
Kodekan aplikasi
Gunakan langkah-langkah berikut untuk mengonfigurasi aplikasi Anda untuk menghasilkan dan menggunakan pesan menggunakan Azure Event Hubs.
Konfigurasikan kredensial Event Hub dengan menambahkan properti berikut ke dalam file application.properties Anda.
spring.cloud.stream.kafka.binder.brokers=${AZ_EVENTHUBS_NAMESPACE_NAME}.servicebus.windows.net:9093 spring.cloud.function.definition=consume;supply spring.cloud.stream.bindings.consume-in-0.destination=${AZ_EVENTHUB_NAME} spring.cloud.stream.bindings.consume-in-0.group=$Default spring.cloud.stream.bindings.supply-out-0.destination=${AZ_EVENTHUB_NAME}Tips
Jika Anda menggunakan versi
spring-cloud-azure-dependencies:4.3.0, maka Anda harus menambahkan propertispring.cloud.stream.binders.<kafka-binder-name>.environment.spring.main.sourcesdengan nilaicom.azure.spring.cloud.autoconfigure.kafka.AzureKafkaSpringCloudStreamConfiguration.Karena
4.4.0, properti ini akan ditambahkan secara otomatis, jadi tidak perlu menambahkannya secara manual.Tabel berikut ini menjelaskan bidang dalam konfigurasi:
Bidang Deskripsi spring.cloud.stream.kafka.binder.brokersMenentukan titik akhir Azure Event Hubs. spring.cloud.stream.bindings.consume-in-0.destinationMenentukan hub peristiwa tujuan input, yang untuk tutorial ini adalah hub yang Anda buat sebelumnya. spring.cloud.stream.bindings.consume-in-0.groupMenentukan Grup Konsumen dari Azure Event Hubs, yang dapat Anda atur ke $Defaultuntuk menggunakan grup konsumen dasar yang dibuat saat Anda membuat instans Azure Event Hubs.spring.cloud.stream.bindings.supply-out-0.destinationMenentukan hub peristiwa tujuan output, yang untuk tutorial ini sama dengan tujuan input. Catatan
Jika Anda mengaktifkan pembuatan topik otomatis, pastikan untuk menambahkan item konfigurasi
spring.cloud.stream.kafka.binder.replicationFactor, dengan nilai diatur ke setidaknya1. Untuk informasi selengkapnya, lihat Panduan Referensi Binder Spring Cloud Stream Kafka.Edit file kelas startup untuk menampilkan konten berikut.
import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.boot.CommandLineRunner; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.annotation.Bean; import org.springframework.messaging.Message; import org.springframework.messaging.support.GenericMessage; import reactor.core.publisher.Flux; import reactor.core.publisher.Sinks; import java.util.function.Consumer; import java.util.function.Supplier; @SpringBootApplication public class EventHubKafkaBinderApplication implements CommandLineRunner { private static final Logger LOGGER = LoggerFactory.getLogger(EventHubKafkaBinderApplication.class); private static final Sinks.Many<Message<String>> many = Sinks.many().unicast().onBackpressureBuffer(); public static void main(String[] args) { SpringApplication.run(EventHubKafkaBinderApplication.class, args); } @Bean public Supplier<Flux<Message<String>>> supply() { return ()->many.asFlux() .doOnNext(m->LOGGER.info("Manually sending message {}", m)) .doOnError(t->LOGGER.error("Error encountered", t)); } @Bean public Consumer<Message<String>> consume() { return message->LOGGER.info("New message received: '{}'", message.getPayload()); } @Override public void run(String... args) { many.emitNext(new GenericMessage<>("Hello World"), Sinks.EmitFailureHandler.FAIL_FAST); } }Tips
Dalam tutorial ini, tidak ada operasi autentikasi dalam konfigurasi atau kode. Namun, menyambungkan ke layanan Azure memerlukan autentikasi. Untuk menyelesaikan autentikasi, Anda perlu menggunakan identitas Azure. Spring Cloud Azure menggunakan
DefaultAzureCredential, yang disediakan pustaka identitas Azure untuk membantu Anda mendapatkan kredensial tanpa perubahan kode apa pun.DefaultAzureCredentialmendukung beberapa metode autentikasi dan menentukan metode mana yang akan digunakan saat runtime. Pendekatan ini memungkinkan aplikasi Anda menggunakan metode autentikasi yang berbeda di lingkungan yang berbeda (seperti lingkungan lokal dan produksi) tanpa menerapkan kode khusus lingkungan. Untuk informasi selengkapnya, lihat DefaultAzureCredential.Untuk menyelesaikan autentikasi di lingkungan pengembangan lokal, Anda dapat menggunakan Azure CLI, Visual Studio Code, PowerShell, atau metode lainnya. Untuk informasi selengkapnya, lihat autentikasi Azure di lingkungan pengembangan Java. Untuk menyelesaikan autentikasi di lingkungan hosting Azure, sebaiknya gunakan identitas terkelola yang ditetapkan pengguna. Untuk informasi selengkapnya, lihat Apa identitas terkelola untuk sumber daya Azure?
Mulai aplikasi. Pesan seperti contoh berikut akan diposting di log aplikasi Anda:
Kafka version: 3.0.1 Kafka commitId: 62abe01bee039651 Kafka startTimeMs: 1622616433956 New message received: 'Hello World'
Menyebarkan ke Azure Spring Apps
Sekarang setelah Anda memiliki aplikasi Spring Boot yang berjalan secara lokal, saatnya untuk memindahkannya ke produksi. Azure Spring Apps memudahkan penyebaran aplikasi Spring Boot ke Azure tanpa perubahan kode apa pun. Layanan ini mengelola infrastruktur aplikasi Spring sehingga pengembang dapat fokus pada kode mereka. Azure Spring Apps menyediakan manajemen siklus hidup menggunakan pemantauan dan diagnostik yang komprehensif, manajemen konfigurasi, penemuan layanan, integrasi CI/CD, penyebaran biru-hijau, dan banyak lagi. Untuk menyebarkan aplikasi Anda ke Azure Spring Apps, lihat Deploy aplikasi pertama Anda ke Azure Spring Apps.