Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Den här artikeln beskriver hur du kan använda Spring Cloud Azure och Spring Messaging Azure Event Hubs. Spring Framework ger omfattande stöd för integrering med meddelandesystem.
Meddelandehantering med Spring och Azure Event Hubs
Viktiga begrepp
Azure Event Hubs är en intern dataströmningstjänst i molnet som kan strömma miljontals händelser per sekund, med låg svarstid, från valfri källa till valfri destination. Spring Messaging för Azure Event Hubs-projektet tillämpar grundläggande Spring-begrepp på utvecklingen av event hubs-baserade meddelandelösningar. Den innehåller en mall som en abstraktion på hög nivå för att skicka meddelanden. Det ger också stöd för meddelandedrivna vanliga gamla Java-objekt (POJO) med @EventHubsListener anteckningar och en lyssnarcontainer. Dessa bibliotek främjar användningen av beroendeinmatning och deklarativ konfiguration. I alla dessa fall kan du se likheter med JMS-stödet i Spring Framework och RabbitMQ-stödet i Spring AMQP.
Konfiguration av beroenden
<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>
Konfiguration
Biblioteket innehåller följande konfigurationsalternativ för EventHubsTemplate och @EventHubsListener:
| Fastighet | Typ | Beskrivning |
|---|---|---|
spring.cloud.azure.message-converter.isolated-object-mapper |
booleskt | Om en isolerad ObjectMapper-böna används för Event Hubs-meddelandekonverterare. Aktiverad som standard. |
spring.cloud.azure.eventhubs.enabled |
booleskt | Om en Azure Event Hubs är aktiverad. |
spring.cloud.azure.eventhubs.connection-string |
Sträng | Anslutningssträngsvärde för Event Hubs-namnområde. |
spring.cloud.azure.eventhubs.namespace |
Sträng | Event Hubs-namnområdesvärde, som är prefixet för det fullständiga domännamnet. Ett FQDN ska bestå av NamespaceName.DomainName |
spring.cloud.azure.eventhubs.processor.checkpoint-store.account-name |
Sträng | Namn på lagringskontot. |
spring.cloud.azure.eventhubs.processor.checkpoint-store.account-key |
Sträng | Åtkomstnyckel för lagringskonto. |
spring.cloud.azure.eventhubs.processor.checkpoint-store.container-name |
Sträng | Namn på lagringscontainer. |
Grundläggande användning
Anpassad meddelandekonverterare för Event Hubs
Det finns två sätt att konfigurera Event Hubs-meddelandekonverterare:
Konfigurera följande egenskap så att standardkonverteraren för Event Hubs-meddelanden använder en
ObjectMapperböna, som kan vara din anpassade bönaObjectMappereller en som hanteras av Spring Boot:spring: cloud: azure: message-converter: isolated-object-mapper: falseDefiniera event hubs-meddelandekonverterarens böna direkt:
@Bean AzureMessageConverter<EventData, EventData> eventHubsMessageConverter() { JsonMapper jsonMapper = JsonMapper.builder().addModule(new JavaTimeModule()).build(); return new EventHubsMessageConverter(jsonMapper); }
Skicka meddelanden till Azure Event Hubs
Använd följande steg för att skicka meddelanden:
Fyll i konfigurationsalternativen för autentiseringsuppgifter med någon av följande metoder:
För autentiseringsuppgifter som
DefaultAzureCredentialkonfigurerar du följande egenskaper i din application.yml-fil:spring: cloud: azure: eventhubs: namespace: ${AZURE_EVENT_HUBS_NAMESPACE} processor: checkpoint-store: container-name: ${CHECKPOINT-CONTAINER} account-name: ${CHECKPOINT-STORAGE-ACCOUNT}För autentiseringsuppgifter som anslutningssträng konfigurerar du följande egenskaper i filen application.yml:
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}För autentiseringsuppgifter som hanterade identiteter konfigurerar du följande egenskaper i din application.yml-fil:
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}För autentiseringsuppgifter för en service principal konfigurerar du följande egenskaper i din application.yml-fil:
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}
Anmärkning
Följande värden tillåts för tenant-id: common, organizations, consumerseller klientorganisations-ID. Mer information om dessa värden finns i avsnittet Använd fel slutpunkt (personliga konton och organisationskonton) i Fel AADSTS50020 – Användarkonto från identitetsprovidern finns inte i klientorganisationen. Information om hur du konverterar din enklientapp till flerklient finns i Konvertera enklientapp till flerklient på Microsoft Entra ID.
EventHubsTemplateär automatiskt konfigurerad och du kan autokoppla den direkt till dina egna bönor, som du ser i följande exempel:@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(); } }
Ta emot meddelanden från Azure Event Hubs
Använd följande steg för att ta emot meddelanden:
Fyll i konfigurationsalternativen för autentiseringsuppgifter.
Lägg till annoteringen
@EnableAzureMessaging, så som i följande exempel. Den här kommentaren utlöser identifieringen av metoder som kommenterats med@EventHubsListeneroch skapar containern för meddelandelyssnare under täcket.@SpringBootApplication @EnableAzureMessaging public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } }Anmärkning
För att undvika upprepning aktiveras annoteringen
@EnableAzureMessagingautomatiskt i Spring Cloud Azure Auto-configure från och med version5.21.0.När Event Hubs-infrastrukturen finns kan du kommentera alla bönor med
@EventHubsListenerför att skapa en lyssnarslutpunkt. Följande komponent skapar en slutpunkt för en lyssnare i händelsehubbenEVENT_HUB_NAMEoch konsumentgruppen$Default:@Component public class MyBean { @EventHubsListener(destination = "EVENT_HUB_NAME", group = "$Default") public void processMessage(String content) { // ... } }
Exempel
Mer information finns i lagringsplatsen azure-spring-boot-samples på GitHub.