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 Service Bus. Spring Framework memberikan dukungan ekstensif untuk mengintegrasikan dengan sistem olahpesan.
Spring Messaging Layanan Bus Azure
Konsep utama
Azure Service Bus adalah penyedia layanan perpesanan perusahaan yang dikelola sepenuhnya dengan antrean pesan dan topik publikasi-berlangganan. Proyek Spring Messaging for Azure Service Bus menerapkan konsep inti Spring untuk pengembangan solusi olahpesan berbasis bus layanan. Ini menyediakan templat sebagai abstraksi tingkat tinggi untuk mengirim pesan. Ini juga menyediakan dukungan untuk POJO berbasis pesan dengan anotasi @ServiceBusListener 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-servicebus</artifactId>
</dependency>
Konfigurasi
Pustaka menyediakan opsi konfigurasi berikut untuk ServiceBusTemplate dan @ServiceBusListener:
| Harta benda | Tipe | Deskripsi |
|---|---|---|
spring.cloud.azure.message-converter.isolated-object-mapper |
Boolean | Apakah bean ObjectMapper terisolasi digunakan untuk pengonversi pesan Bus Layanan. Diaktifkan secara default. |
spring.cloud.azure.servicebus.enabled |
Boolean | Apakah Azure Service Bus diaktifkan. |
spring.cloud.azure.servicebus.connection-string |
string | Nilai string koneksi untuk Namespace Bus Layanan. |
spring.cloud.azure.servicebus.custom-endpoint-address |
string | Alamat titik akhir kustom yang akan digunakan saat menyambungkan ke Azure Bus Layanan. |
spring.cloud.azure.servicebus.namespace |
string | Nilai Bus Layanan Namespace, yaitu awalan dari FQDN. FQDN harus terdiri dari NamespaceName.DomainName |
spring.cloud.azure.servicebus.entity-type |
string | Jenis entitas Azure Service Bus. |
Penggunaan dasar
Pengonversi pesan Bus Layanan kustom
Ada dua cara untuk mengonfigurasi pengonversi pesan Bus Layanan:
Konfigurasikan properti berikut agar konverter pesan default Bus Layanan 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 Bus Layanan secara langsung:
@Bean AzureMessageConverter<ServiceBusReceivedMessage, ServiceBusMessage> serviceBusMessageConverter() { JsonMapper jsonMapper = JsonMapper.builder().addModule(new JavaTimeModule()).build(); return new ServiceBusMessageConverter(jsonMapper); }
Mengirim pesan ke Azure Service Bus
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: servicebus: namespace: ${AZURE_SERVICE_BUS_NAMESPACE} entity-type: ${AZURE_SERVICE_BUS_ENTITY_TYPE}Untuk kredensial sebagai string koneksi, konfigurasikan properti berikut dalam file application.yml Anda:
spring: cloud: azure: servicebus: connection-string: ${AZURE_SERVICE_BUS_CONNECTION_STRING} entity-type: ${AZURE_SERVICE_BUS_ENTITY_TYPE}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} profile: tenant-id: <tenant> servicebus: namespace: ${AZURE_SERVICE_BUS_NAMESPACE} entity-type: ${AZURE_SERVICE_BUS_ENTITY_TYPE}
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.
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> servicebus: namespace: ${AZURE_SERVICE_BUS_NAMESPACE} entity-type: ${AZURE_SERVICE_BUS_ENTITY_TYPE}
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.
ServiceBusTemplatedikonfigurasi otomatis, dan Anda dapat mengotomatiskannya langsung ke kacang Anda sendiri, seperti yang ditunjukkan dalam contoh berikut:@Component public class MyBean { private final ServiceBusTemplate serviceBusTemplate; public MyBean(ServiceBusTemplate serviceBusTemplate) { this.serviceBusTemplate = serviceBusTemplate; } public void someMethod() { this.serviceBusTemplate.sendAsync('QUEUE_NAME', MessageBuilder.withPayload("Hello world").build()).subscribe(); } }
Menerima pesan dari Azure Service Bus
Gunakan langkah-langkah berikut untuk menerima pesan:
Isi opsi konfigurasi kredensial.
Tambahkan anotasi
@EnableAzureMessaging, yang memicu penemuan metode yang dianotasi dengan@ServiceBusListener, 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 ServiceBus tersedia, Anda dapat menganotasi bean apa pun dengan
@ServiceBusListeneruntuk membuat endpoint pendengar. Komponen berikut membuat endpoint listener pada antreanQUEUE_NAME:@Component public class MyBean { @ServiceBusListener(destination = "QUEUE_NAME") public void processMessage(String content) { // ... } }
Menyesuaikan properti klien Azure Bus Layanan
Pengembang dapat menggunakan AzureServiceClientBuilderCustomizer untuk menyesuaikan properti Klien Bus Layanan. Contoh berikut mengkustomisasi properti sessionIdleTimeout di ServiceBusClientBuilder:
@Bean
public AzureServiceClientBuilderCustomizer<ServiceBusClientBuilder.ServiceBusSessionProcessorClientBuilder> customizeBuilder() {
return builder -> builder.sessionIdleTimeout(Duration.ofSeconds(10));
}
Contoh-contoh
Untuk informasi selengkapnya, lihat azure-spring-boot-samples repositori di GitHub.