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 Event Hubs'ı 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 Olay Merkezi
Temel kavramlar
Azure Event Hubs, bulutta, herhangi bir kaynaktan herhangi bir hedefe düşük gecikme süresiyle saniyede milyonlarca olay akışı sağlayan yerel bir veri akışı hizmetidir. Azure Event Hubs için Spring Messaging projesi, event hubs tabanlı mesajlaşma çözümlerinin geliştirilmesine temel Spring kavramlarını uygular. İleti göndermek için üst düzey soyutlama olarak bir @EventHubsListener içeren ileti temelli düz eski Java nesneleri (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-eventhubs</artifactId>
</dependency>
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-messaging-eventhubs-checkpointstore-blob</artifactId>
</dependency>
Konfigürasyon
Kitaplık, EventHubsTemplate ve @EventHubsListeneriç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 | Event Hubs ileti dönüştürücüsü için yalıtılmış bir ObjectMapper çekirdeği kullanılıp kullanılmadığı. Varsayılan olarak etkindir. |
spring.cloud.azure.eventhubs.enabled |
Boolean | Azure Event Hubs'ın etkinleştirilip etkinleştirilmediği. |
spring.cloud.azure.eventhubs.connection-string |
Dize | Event Hubs Ad Alanı bağlantı dizesi değeri. |
spring.cloud.azure.eventhubs.namespace |
Dize | FQDN'nin ön eki olan Event Hubs Ad Alanı değeri. FQDN, NamespaceName.DomainName dosyasından oluşmalıdır |
spring.cloud.azure.eventhubs.processor.checkpoint-store.account-name |
Dize | Depolama hesabının adı. |
spring.cloud.azure.eventhubs.processor.checkpoint-store.account-key |
Dize | Depolama hesabı erişim anahtarı. |
spring.cloud.azure.eventhubs.processor.checkpoint-store.container-name |
Dize | Depolama kapsayıcısı adı. |
Temel kullanım
Özel Event Hubs ileti dönüştürücüsü
Event Hubs ileti dönüştürücüs'lerini yapılandırmanın iki yolu vardır:
Aşağıdaki özelliği, varsayılan Event Hubs 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: falseEvent Hubs ileti dönüştürücüsü çekirdeğini doğrudan tanımlayın:
@Bean AzureMessageConverter<EventData, EventData> eventHubsMessageConverter() { JsonMapper jsonMapper = JsonMapper.builder().addModule(new JavaTimeModule()).build(); return new EventHubsMessageConverter(jsonMapper); }
Azure Event Hubs'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: eventhubs: namespace: ${AZURE_EVENT_HUBS_NAMESPACE} processor: checkpoint-store: container-name: ${CHECKPOINT-CONTAINER} account-name: ${CHECKPOINT-STORAGE-ACCOUNT}Bağlantı dizesi olarak kimlik bilgileri için application.yml dosyanızda aşağıdaki özellikleri yapılandırın:
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}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} eventhubs: namespace: ${AZURE_EVENT_HUBS_NAMESPACE} processor: checkpoint-store: container-name: ${CONTAINER_NAME} account-name: ${ACCOUNT_NAME}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> eventhubs: namespace: ${AZURE_EVENT_HUBS_NAMESPACE} processor: checkpoint-store: container-name: ${CONTAINER_NAME} account-name: ${ACCOUNT_NAME}
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.
EventHubsTemplateotomatik olarak yapılandırılır ve aşağıdaki örnekte gösterildiği gibi doğrudan kendi çekirdeklerinize otomatik olarak kablolandırabilirsiniz:@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(); } }
Azure Event Hubs'dan ileti alma
İletileri almak için aşağıdaki adımları kullanın:
Kimlik bilgisi yapılandırma seçeneklerini doldurun.
Aşağıdaki örnekte gösterildiği gibi
@EnableAzureMessagingek açıklamasını ekleyin. Bu ek açıklama,@EventHubsListenerile açıklama ek açıklamalı yöntemlerin bulunmasını tetikler ve kapakların altında ileti dinleyici kapsayıcısını oluşturur.@SpringBootApplication @EnableAzureMessaging public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } }Uyarı
Sürümünden
5.21.0bu yana yinelemeyi önlemek için Spring Cloud Azure Otomatik yapılandırma ek açıklaması@EnableAzureMessagingotomatik olarak etkinleştirilir.Event Hubs altyapısı mevcut olduğunda, dinleyici uç noktası oluşturmak için
@EventHubsListenerile herhangi bir fasulyeye açıklama ekleyebilirsiniz. Aşağıdaki bileşen,EVENT_HUB_NAMEolay hub'ına ve$Defaulttüketici grubuna bir dinleyici uç noktası oluşturur:@Component public class MyBean { @EventHubsListener(destination = "EVENT_HUB_NAME", group = "$Default") public void processMessage(String content) { // ... } }
Örnekler
Daha fazla bilgi için GitHub'daki azure-spring-boot-samples depoya bakın.