Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu makalede Spring Cloud Azure ve Spring Messaging Azure Service Bus'ı nasıl kullanabileceğiniz açıklanmaktadır. Spring Framework, mesajlaşma sistemleriyle tümleştirme için kapsamlı destek sağlar.
Spring Mesajlaşma Azure Hizmet Veri Yolu
Temel kavramlar
Azure Service Bus, ileti kuyrukları ve yayımlama-abone olma konularına sahip tam olarak yönetilen bir kurumsal ileti aracısıdır. Azure Service Bus için Spring Messaging projesi, hizmet veri yolu tabanlı mesajlaşma çözümlerinin geliştirilmesine temel Spring kavramlarını uygular. İleti göndermek için üst düzey soyutlama olarak bir @ServiceBusListener notları ve bir dinleyici kapsayıcısı ile mesaj odaklı POJO'lar için de destek sağlar. Bu kitaplıklar bağımlılık ekleme ve bildirim temelli yapılandırma kullanımını teşvik eder. Tüm bu durumlarda Spring Framework'te JMS desteğiyle ve Spring AMQP'de RabbitMQ desteğiyle benzerlikler görebilirsiniz.
Bağımlılık kurulumu
<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>
Konfigürasyon
Kitaplık, ServiceBusTemplate ve @ServiceBusListeneriçin aşağıdaki yapılandırma seçeneklerini sağlar:
| Mülkiyet | Türü | Açıklama |
|---|---|---|
spring.cloud.azure.message-converter.isolated-object-mapper |
Boolean | Service Bus ileti dönüştürücüsü için yalıtılmış bir ObjectMapper çekirdeğinin kullanılıp kullanılmadığı. Varsayılan olarak etkindir. |
spring.cloud.azure.servicebus.enabled |
Boolean | Azure Service Bus'ın etkinleştirilip etkinleştirilmediği. |
spring.cloud.azure.servicebus.connection-string |
Dize | Service Bus ad alanı bağlantı dizesi değeri. |
spring.cloud.azure.servicebus.custom-endpoint-address |
Dize | Service Bus'a bağlanırken kullanılacak özel uç nokta adresi. |
spring.cloud.azure.servicebus.namespace |
Dize | FQDN’nin ön ekini oluşturan Service Bus ad alanı değeri. FQDN, NamespaceName.DomainName dosyasından oluşmalıdır |
spring.cloud.azure.servicebus.entity-type |
Dize | Azure Service Bus varlık türü. |
Temel kullanım
Özel Service Bus ileti dönüştürücüsü
Service Bus ileti dönüştürücüsİnİ yapılandırmanın iki yolu vardır:
Aşağıdaki özelliği, varsayılan Service Bus ileti dönüştürücüsünü özel
ObjectMapperfasulyeniz veya Spring Boot tarafından yönetilen birObjectMapperfasulye kullanacak şekilde yapılandırın:spring: cloud: azure: message-converter: isolated-object-mapper: falseService Bus ileti dönüştürücüsü çekirdeğini doğrudan tanımlayın:
@Bean AzureMessageConverter<ServiceBusReceivedMessage, ServiceBusMessage> serviceBusMessageConverter() { JsonMapper jsonMapper = JsonMapper.builder().addModule(new JavaTimeModule()).build(); return new ServiceBusMessageConverter(jsonMapper); }
Azure Service Bus'a ileti gönderme
İleti göndermek için aşağıdaki adımları kullanın:
Aşağıdaki yaklaşımlardan birini kullanarak kimlik bilgisi yapılandırma seçeneklerini doldurun:
DefaultAzureCredentialkimlik bilgileri için application.yml dosyanızda aşağıdaki özellikleri yapılandırın:spring: cloud: azure: servicebus: namespace: ${AZURE_SERVICE_BUS_NAMESPACE} entity-type: ${AZURE_SERVICE_BUS_ENTITY_TYPE}Bağlantı dizesi olarak kimlik bilgileri için application.yml dosyanızda aşağıdaki özellikleri yapılandırın:
spring: cloud: azure: servicebus: connection-string: ${AZURE_SERVICE_BUS_CONNECTION_STRING} entity-type: ${AZURE_SERVICE_BUS_ENTITY_TYPE}Yönetilen kimlik olarak kimlik bilgileri için application.yml dosyanızda aşağıdaki özellikleri yapılandırın:
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}
Uyarı
tenant-idiçin aşağıdaki değerlere izin verilir: common, organizations, consumersveya kiracı kimliği. Bu değerler hakkında daha fazla bilgi için, Hata AADSTS50020 - Kimlik sağlayıcısından kullanıcı hesabı kiracımevcut değil bölümünün Yanlış uç nokta (kişisel ve kuruluş hesapları) kullanıldı bölümüne bakın. Tek kiracılı uygulamanızı dönüştürme hakkında bilgi için bkz. Tek kiracılı uygulamayı Microsoft Entra IDüzerinde çok kiracılıya dönüştürme.
Hizmet sorumlusu olarak kimlik bilgileri için application.yml dosyanızda aşağıdaki özellikleri yapılandırın:
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}
Uyarı
tenant-idiçin aşağıdaki değerlere izin verilir: common, organizations, consumersveya kiracı kimliği. Bu değerler hakkında daha fazla bilgi için, Hata AADSTS50020 - Kimlik sağlayıcısından kullanıcı hesabı kiracımevcut değil bölümünün Yanlış uç nokta (kişisel ve kuruluş hesapları) kullanıldı bölümüne bakın. Tek kiracılı uygulamanızı dönüştürme hakkında bilgi için bkz. Tek kiracılı uygulamayı Microsoft Entra IDüzerinde çok kiracılıya dönüştürme.
ServiceBusTemplateotomatik olarak yapılandırılır ve aşağıdaki örnekte gösterildiği gibi, doğrudan kendi bean'lerinize otomatik olarak bağlayabilirsiniz:@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(); } }
Azure Service Bus'tan ileti alma
İletileri almak için aşağıdaki adımları kullanın:
Kimlik bilgisi yapılandırma seçeneklerini doldurun.
@EnableAzureMessagingek açıklamasını ekleyin; bu,@ServiceBusListenerile ek açıklanmış yöntemlerin keşfedilmesini tetikler ve arka planda mesaj dinleyici kapsayıcısını oluşturur.@SpringBootApplication @EnableAzureMessaging public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } }Uyarı
Tekrarı önlemek için,
5.21.0sürümünden itibaren Spring Cloud Azure Otomatik Yapılandırma anotasyonu@EnableAzureMessagingotomatik olarak etkinleştirilmiştir.ServiceBus altyapısı mevcut olduğunda, dinleyici uç noktası oluşturmak için
@ServiceBusListenerile herhangi bir fasulyeye açıklama ekleyebilirsiniz. Aşağıdaki bileşen,QUEUE_NAMEkuyruğunda bir dinleyici uç noktası oluşturur:@Component public class MyBean { @ServiceBusListener(destination = "QUEUE_NAME") public void processMessage(String content) { // ... } }
Service Bus istemci özelliklerini özelleştirme
Geliştiriciler Service Bus İstemcisi özelliklerini özelleştirmek için AzureServiceClientBuilderCustomizer kullanabilir. Aşağıdaki örnek, sessionIdleTimeoutiçindeki ServiceBusClientBuilder özelliğini özelleştirmektedir:
@Bean
public AzureServiceClientBuilderCustomizer<ServiceBusClientBuilder.ServiceBusSessionProcessorClientBuilder> customizeBuilder() {
return builder -> builder.sessionIdleTimeout(Duration.ofSeconds(10));
}
Örnekler
Daha fazla bilgi için GitHub'daki azure-spring-boot-samples depoya bakın.