Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
In dit artikel wordt beschreven hoe u Spring Cloud Azure en Spring Messaging Azure Event Hubs kunt gebruiken. Het Spring Framework biedt uitgebreide ondersteuning voor integratie met berichtensystemen.
Spring Messaging voor Azure Event Hubs
Belangrijke concepten
Azure Event Hubs is een systeemeigen gegevensstreamingservice in de cloud die miljoenen gebeurtenissen per seconde kan streamen, met lage latentie, van elke bron naar elke bestemming. Het Spring Messaging-project voor Azure Event Hubs past kernconcepten van Spring toe op de ontwikkeling van op Event Hubs gebaseerde berichtenoplossingen. Het biedt een sjabloon als een abstractie op hoog niveau voor het verzenden van berichten. Het biedt ook ondersteuning voor berichtgestuurde plain old Java objects (POJO's) met @EventHubsListener annotaties en een listenercontainer. Deze bibliotheken bevorderen het gebruik van afhankelijkheidsinjectie en declaratieve configuratie. In al deze gevallen ziet u overeenkomsten met de JMS-ondersteuning in het Spring Framework en RabbitMQ-ondersteuning in Spring AMQP.
Afhankelijkheid instellen
<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>
Configuratie
De bibliotheek biedt de volgende configuratieopties voor EventHubsTemplate en @EventHubsListener:
| Vastgoed | Typ | Beschrijving |
|---|---|---|
spring.cloud.azure.message-converter.isolated-object-mapper |
booleaan | Of een geïsoleerde ObjectMapper-bean wordt gebruikt voor Event Hubs-berichtconversieprogramma. Standaard ingeschakeld. |
spring.cloud.azure.eventhubs.enabled |
booleaan | Of een Azure Event Hubs is ingeschakeld. |
spring.cloud.azure.eventhubs.connection-string |
Touwtje | Waarde van de verbindingsreeks van de Event Hubs-naamruimte. |
spring.cloud.azure.eventhubs.namespace |
Touwtje | Event Hubs-naamruimtewaarde, het voorvoegsel van de FQDN. Een FQDN moet bestaan uit NamespaceName.DomainName |
spring.cloud.azure.eventhubs.processor.checkpoint-store.account-name |
Touwtje | Naam voor het opslagaccount. |
spring.cloud.azure.eventhubs.processor.checkpoint-store.account-key |
Touwtje | Toegangssleutel voor opslagaccount. |
spring.cloud.azure.eventhubs.processor.checkpoint-store.container-name |
Touwtje | Naam van opslagcontainer. |
Basaal gebruik
Conversieprogramma voor aangepaste Event Hubs-berichten
Er zijn twee manieren om Event Hubs-berichtconversieprogramma te configureren:
Configureer de volgende eigenschap zodat het standaardberichtconversieprogramma van Event Hubs een
ObjectMapperbean gebruikt. Dit kan uw aangepasteObjectMapperbean zijn of één die wordt beheerd door Spring Boot:spring: cloud: azure: message-converter: isolated-object-mapper: falseDefinieer de Event Hubs-berichtconverterbean direct:
@Bean AzureMessageConverter<EventData, EventData> eventHubsMessageConverter() { JsonMapper jsonMapper = JsonMapper.builder().addModule(new JavaTimeModule()).build(); return new EventHubsMessageConverter(jsonMapper); }
Berichten verzenden naar Azure Event Hubs
Gebruik de volgende stappen om berichten te verzenden:
Vul de configuratieopties voor aanmeldgegevens in op een van de volgende manieren:
Voor aanmeldingsgegevens als
DefaultAzureCredentialconfigureert u de volgende eigenschappen in uw application.yml-bestand:spring: cloud: azure: eventhubs: namespace: ${AZURE_EVENT_HUBS_NAMESPACE} processor: checkpoint-store: container-name: ${CHECKPOINT-CONTAINER} account-name: ${CHECKPOINT-STORAGE-ACCOUNT}Voor referenties als verbindingsreeks configureert u de volgende eigenschappen in uw application.yml-bestand:
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}Voor referenties als beheerde identiteiten configureert u de volgende eigenschappen in uw application.yml-bestand:
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}Voor aanmeldingsgegevens voor een service-principal configureert u de volgende eigenschappen in uw application.yml-bestand:
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}
Opmerking
De volgende waarden zijn toegestaan voor tenant-id: common, organizations, consumersof de tenant-id. Zie voor meer informatie over deze waarden de sectie Verkeerd eindpunt gebruikt (persoonlijke en organisatieaccounts) van Fout AADSTS50020 - Gebruikersaccount van identiteitsprovider bestaat niet in tenant. Zie App met één tenant converteren naar multitenant op Microsoft Entra IDvoor meer informatie over het converteren van uw app met één tenant.
EventHubsTemplateis automatisch geconfigureerd en u kunt deze rechtstreeks in uw eigen bonen instellen, zoals wordt weergegeven in het volgende voorbeeld:@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(); } }
Berichten ontvangen van Azure Event Hubs
Gebruik de volgende stappen om berichten te ontvangen:
Vul de configuratieopties voor inloggegevens in.
Voeg de
@EnableAzureMessagingaantekening toe, zoals wordt weergegeven in het volgende voorbeeld. Deze annotatie zet de detectie in gang van methoden die zijn geannoteerd met@EventHubsListener, waarbij achter de schermen de message-listenercontainer wordt aangemaakt.@SpringBootApplication @EnableAzureMessaging public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } }Opmerking
Om herhaling te voorkomen, wordt de annotatie
@EnableAzureMessagingsinds versie5.21.0automatisch ingeschakeld door Spring Cloud Azure Auto-configure.Wanneer de Event Hubs-infrastructuur aanwezig is, kunt u aantekeningen maken bij elke bean met
@EventHubsListenerom een listener-eindpunt te maken. Het volgende onderdeel maakt een listener-eindpunt op deEVENT_HUB_NAMEEvent Hub en de$Defaultconsumentengroep:@Component public class MyBean { @EventHubsListener(destination = "EVENT_HUB_NAME", group = "$Default") public void processMessage(String content) { // ... } }
Voorbeelden
Zie de azure-spring-boot-samples opslagplaats op GitHub voor meer informatie.