Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Tento článek popisuje, jak můžete používat Spring Cloud Azure a Spring Messaging Azure Event Hubs. Spring Framework poskytuje rozsáhlou podporu integrace se systémy zasílání zpráv.
Systém zasílání zpráv Spring pro Azure Event Hubs
Klíčové koncepty
Azure Event Hubs je nativní služba streamování dat v cloudu, která může streamovat miliony událostí za sekundu s nízkou latencí z libovolného zdroje do libovolného cíle. Projekt Spring Messaging pro azure Event Hubs používá základní koncepty Springu na vývoj řešení zasílání zpráv založených na centrech událostí. Poskytuje šablonu jako abstrakci vysoké úrovně pro odesílání zpráv. Poskytuje také podporu pro zprávami řízené objekty Java typu POJO s anotacemi @EventHubsListener a kontejnerem listeneru. Tyto knihovny podporují použití injektáže závislostí a deklarativní konfigurace. Ve všech těchto případech vidíte podobnosti s podporou JMS v rámci podpory Spring Framework a RabbitMQ v aplikaci Spring AMQP.
Nastavení závislostí
<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>
Konfigurace
Knihovna poskytuje následující možnosti konfigurace pro EventHubsTemplate a @EventHubsListener:
| Vlastnictví | Typ | Popis |
|---|---|---|
spring.cloud.azure.message-converter.isolated-object-mapper |
Boolean | Zda se v převaděči zpráv služby Event Hubs používá samostatný bean ObjectMapper. Ve výchozím nastavení je povoleno. |
spring.cloud.azure.eventhubs.enabled |
Boolean | Určuje, jestli je služba Azure Event Hubs povolená. |
spring.cloud.azure.eventhubs.connection-string |
Řetězec | Hodnota připojovacího řetězce pro obor názvů služby Event Hubs |
spring.cloud.azure.eventhubs.namespace |
Řetězec | Hodnota oboru názvů služby Event Hubs, tedy předpona plně kvalifikovaného názvu domény. FQDN by se měl skládat z NamespaceName.DomainName |
spring.cloud.azure.eventhubs.processor.checkpoint-store.account-name |
Řetězec | Název účtu úložiště |
spring.cloud.azure.eventhubs.processor.checkpoint-store.account-key |
Řetězec | Přístupový klíč účtu úložiště. |
spring.cloud.azure.eventhubs.processor.checkpoint-store.container-name |
Řetězec | Název kontejneru úložiště |
Základní použití
Vlastní převaděč zpráv služby Event Hubs
Existují dva způsoby konfigurace převaděče zpráv služby Event Hubs:
Nakonfigurujte následující vlastnost tak, aby výchozí převaděč zpráv služby Event Hubs používal
ObjectMapperbean, což může být vlastníObjectMapperbean nebo jedna spravovaná službou Spring Boot:spring: cloud: azure: message-converter: isolated-object-mapper: falseDefinujte převaděč zpráv služby Event Hubs přímo:
@Bean AzureMessageConverter<EventData, EventData> eventHubsMessageConverter() { JsonMapper jsonMapper = JsonMapper.builder().addModule(new JavaTimeModule()).build(); return new EventHubsMessageConverter(jsonMapper); }
Odesílání zpráv do služby Azure Event Hubs
K odesílání zpráv použijte následující postup:
Pomocí jednoho z následujících přístupů vyplňte možnosti konfigurace přihlašovacích údajů:
Pro přihlašovací údaje jako
DefaultAzureCredentialnakonfigurujte v souboru application.yml následující vlastnosti:spring: cloud: azure: eventhubs: namespace: ${AZURE_EVENT_HUBS_NAMESPACE} processor: checkpoint-store: container-name: ${CHECKPOINT-CONTAINER} account-name: ${CHECKPOINT-STORAGE-ACCOUNT}Pro přihlašovací údaje jako připojovací řetězec nakonfigurujte v souboru application.yml následující vlastnosti:
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}U přihlašovacích údajů jako spravovaných identit nakonfigurujte v souboru application.yml následující vlastnosti:
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}Pro přihlašovací údaje pro instanční objekt služby nakonfigurujte v souboru application.yml následující vlastnosti:
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}
Poznámka:
Pro tenant-idjsou povoleny následující hodnoty: common, organizations, consumersnebo ID tenanta. Další informace o těchto hodnotách najdete v části Použití nesprávného koncového bodu (osobní a organizační účty) v části Chyba AADSTS50020 – Uživatelský účet poskytovatele identity neexistuje v tenantovi. Informace o převodu aplikace s jedním nájemcem na vícenájemcovou najdete v kapitole Převod jednoklientských aplikací na vícenájemcovou vMicrosoft Entra ID.
EventHubsTemplateje automaticky nakonfigurovaný a můžete ho automaticky připojit přímo do vlastních fazolí, jak je znázorněno v následujícím příkladu:@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(); } }
Příjem zpráv ze služby Azure Event Hubs
K příjmu zpráv použijte následující postup:
Vyplňte možnosti konfigurace přihlašovacích údajů.
Přidejte
@EnableAzureMessagingpoznámku, jak je znázorněno v následujícím příkladu. Tato anotace spouští vyhledávání metod anotovaných pomocí@EventHubsListenera na pozadí vytváří kontejner naslouchače zpráv.@SpringBootApplication @EnableAzureMessaging public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } }Poznámka:
Aby se zabránilo opakování, od verze
5.21.0se anotace@EnableAzureMessagingautomaticky povoluje pomocí Spring Cloud Azure Auto-configure.Pokud je k dispozici infrastruktura služby Event Hubs, můžete anotací
@EventHubsListeneranotovat libovolný bean a vytvořit tak koncový bod naslouchací služby. Následující komponenta vytvoří koncový bod naslouchacího procesu v centru událostíEVENT_HUB_NAMEa skupině příjemců$Default:@Component public class MyBean { @EventHubsListener(destination = "EVENT_HUB_NAME", group = "$Default") public void processMessage(String content) { // ... } }
Vzorky
Další informace najdete v úložišti na GitHubu azure-spring-boot-samples .