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.
Artikel ini menjelaskan cara menggunakan Spring Cloud Azure dan Spring Messaging Azure Event Hubs. Spring Framework memberikan dukungan ekstensif untuk mengintegrasikan dengan sistem olahpesan.
Spring Messaging di Azure Event Hubs
Konsep utama
Azure Event Hubs adalah layanan streaming data asli di cloud yang dapat mengalirkan jutaan peristiwa per detik, dengan latensi rendah, dari sumber apa pun ke tujuan apa pun. Proyek Spring Messaging untuk Azure Event Hubs menerapkan konsep inti Spring untuk pengembangan solusi olahpesan berbasis pusat aktivitas. Ini menyediakan templat sebagai abstraksi tingkat tinggi untuk mengirim pesan. Ini juga mendukung objek Java biasa (POJO) yang digerakkan oleh pesan dengan anotasi @EventHubsListener dan kontainer listener. Pustaka ini mempromosikan penggunaan injeksi dependensi dan konfigurasi deklaratif. Dalam semua kasus ini, Anda dapat melihat kesamaan dengan dukungan JMS di Spring Framework dan dukungan RabbitMQ di Spring AMQP.
Penyiapan dependensi
<dependency>
<groupId>com.azure.spring</groupId>
<artifactId>spring-cloud-azure-starter</artifactId>
</dependency>
<dependency>
<groupId>com.azure.spring</groupId>
<artifactId>spring-messaging-azure-eventhubs</artifactId>
</dependency>
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-messaging-eventhubs-checkpointstore-blob</artifactId>
</dependency>
Konfigurasi
Pustaka menyediakan opsi konfigurasi berikut untuk EventHubsTemplate dan @EventHubsListener:
| Harta benda | Tipe | Deskripsi |
|---|---|---|
spring.cloud.azure.message-converter.isolated-object-mapper |
Boolean | Apakah bean ObjectMapper terpisah digunakan untuk konverter pesan Event Hubs. Diaktifkan secara default. |
spring.cloud.azure.eventhubs.enabled |
Boolean | Apakah Azure Event Hubs diaktifkan. |
spring.cloud.azure.eventhubs.connection-string |
string | Nilai string koneksi Event Hubs Namespace. |
spring.cloud.azure.eventhubs.namespace |
string | Nilai Namespace Event Hubs, yang menjadi prefiks FQDN. FQDN harus terdiri dari NamespaceName.DomainName |
spring.cloud.azure.eventhubs.processor.checkpoint-store.account-name |
string | Nama untuk akun penyimpanan. |
spring.cloud.azure.eventhubs.processor.checkpoint-store.account-key |
string | Kunci akses akun penyimpanan. |
spring.cloud.azure.eventhubs.processor.checkpoint-store.container-name |
string | Nama kontainer penyimpanan. |
Penggunaan dasar
Pengonversi pesan Event Hubs kustom
Ada dua cara untuk mengonfigurasi pengonversi pesan Azure Event Hubs:
Konfigurasikan properti berikut agar pengonversi pesan Event Hubs bawaan menggunakan bean
ObjectMapper, yang dapat berupa beanObjectMapperkustom Anda atau bean yang dikelola oleh Spring Boot:spring: cloud: azure: message-converter: isolated-object-mapper: falseDefinisikan bean konverter pesan Event Hubs secara langsung:
@Bean AzureMessageConverter<EventData, EventData> eventHubsMessageConverter() { JsonMapper jsonMapper = JsonMapper.builder().addModule(new JavaTimeModule()).build(); return new EventHubsMessageConverter(jsonMapper); }
Mengirim pesan ke Azure Event Hubs
Gunakan langkah-langkah berikut untuk mengirim pesan:
Isi opsi konfigurasi kredensial menggunakan salah satu pendekatan berikut:
Untuk kredensial sebagai
DefaultAzureCredential, konfigurasikan properti berikut dalam file application.yml Anda:spring: cloud: azure: eventhubs: namespace: ${AZURE_EVENT_HUBS_NAMESPACE} processor: checkpoint-store: container-name: ${CHECKPOINT-CONTAINER} account-name: ${CHECKPOINT-STORAGE-ACCOUNT}Untuk kredensial sebagai string koneksi, konfigurasikan properti berikut dalam file application.yml Anda:
spring: cloud: azure: eventhubs: connection-string: ${AZURE_EVENT_HUBS_CONNECTION_STRING} processor: checkpoint-store: container-name: ${CHECKPOINT-CONTAINER} account-name: ${CHECKPOINT-STORAGE-ACCOUNT} account-key: ${CHECKPOINT-ACCESS-KEY}Untuk kredensial sebagai identitas terkelola, konfigurasikan properti berikut dalam file application.yml Anda:
spring: cloud: azure: credential: managed-identity-enabled: true client-id: ${AZURE_CLIENT_ID} eventhubs: namespace: ${AZURE_EVENT_HUBS_NAMESPACE} processor: checkpoint-store: container-name: ${CONTAINER_NAME} account-name: ${ACCOUNT_NAME}Untuk kredensial sebagai perwakilan layanan, konfigurasikan properti berikut dalam file application.yml Anda:
spring: cloud: azure: credential: client-id: ${AZURE_CLIENT_ID} client-secret: ${AZURE_CLIENT_SECRET} profile: tenant-id: <tenant> eventhubs: namespace: ${AZURE_EVENT_HUBS_NAMESPACE} processor: checkpoint-store: container-name: ${CONTAINER_NAME} account-name: ${ACCOUNT_NAME}
Nota
Nilai berikut diizinkan untuk tenant-id: common, organizations, consumers, atau ID penyewa. Untuk informasi selengkapnya tentang nilai ini, lihat bagian Menggunakan endpoint yang salah (akun pribadi dan organisasi) dalam Kesalahan AADSTS50020 - Akun pengguna dari penyedia identitas tidak ada di penyewa. Untuk informasi tentang pengonversian aplikasi penyewa tunggal Anda, lihat Mengonversi aplikasi penyewa tunggal ke multipenyewa pada Microsoft Entra ID.
EventHubsTemplatedikonfigurasi otomatis, dan Anda dapat mengotomatiskannya langsung ke kacang Anda sendiri, seperti yang ditunjukkan dalam contoh berikut:@Component public class MyBean { private final EventHubsTemplate eventHubsTemplate; public MyBean(EventHubsTemplate eventHubsTemplate) { this.eventHubsTemplate = eventHubsTemplate; } public void someMethod() { this.eventHubsTemplate.sendAsync('EVENT_HUB_NAME', MessageBuilder.withPayload("Hello world").build()).subscribe(); } }
Menerima pesan dari Azure Event Hubs
Gunakan langkah-langkah berikut untuk menerima pesan:
Isi opsi konfigurasi kredensial.
Tambahkan anotasi
@EnableAzureMessaging, seperti yang ditunjukkan dalam contoh berikut. Anotasi ini memicu penemuan metode yang dianotasi dengan@EventHubsListener, membuat kontainer pendengar pesan di bawah sampul.@SpringBootApplication @EnableAzureMessaging public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } }Nota
Untuk menghindari pengulangan, sejak versi
5.21.0, Spring Cloud Azure Auto-configure secara otomatis mengaktifkan anotasi@EnableAzureMessaging.Saat infrastruktur Event Hubs tersedia, Anda dapat menganotasi bean apa pun dengan
@EventHubsListeneruntuk membuat endpoint pendengar. Komponen berikut membuat titik akhir pendengar di hub peristiwaEVENT_HUB_NAMEdan grup konsumen$Default:@Component public class MyBean { @EventHubsListener(destination = "EVENT_HUB_NAME", group = "$Default") public void processMessage(String content) { // ... } }
Contoh-contoh
Untuk informasi selengkapnya, lihat azure-spring-boot-samples repositori di GitHub.