Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym artykule opisano sposób korzystania z usług Spring Cloud Azure i Spring Messaging Azure Event Hubs. Platforma Spring Framework zapewnia rozbudowaną obsługę integracji z systemami obsługi komunikatów.
Spring Messaging dla Azure Event Hubs
Najważniejsze pojęcia
Azure Event Hubs to natywna usługa przesyłania strumieniowego danych w chmurze, która może przesyłać strumieniowo miliony zdarzeń na sekundę z małym opóźnieniem z dowolnego źródła do dowolnego miejsca docelowego. Projekt Spring Messaging for Azure Event Hubs stosuje podstawowe koncepcje platformy Spring do opracowywania rozwiązań do obsługi komunikatów opartych na centrach zdarzeń. Udostępnia szablon jako abstrakcję wysokiego poziomu do wysyłania komunikatów. Zapewnia również obsługę zwykłych starych obiektów Java opartych na komunikatach (POJO) z @EventHubsListener adnotacjami i kontenerem odbiornika. Te biblioteki promują użycie wstrzykiwania zależności i konfiguracji deklaratywnej. We wszystkich tych sytuacjach można dostrzec podobieństwa do obsługi JMS w Spring Framework oraz obsługi RabbitMQ w Spring AMQP.
Konfiguracja zależności
<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>
Konfiguracja
Biblioteka udostępnia następujące opcje konfiguracji dla EventHubsTemplate i @EventHubsListener:
| Majątek | Typ | Opis |
|---|---|---|
spring.cloud.azure.message-converter.isolated-object-mapper |
typ logiczny (boolowski) | Czy w konwerterze komunikatów usługi Event Hubs jest używany izolowany bean ObjectMapper. Włączone domyślnie. |
spring.cloud.azure.eventhubs.enabled |
typ logiczny (boolowski) | Określa, czy usługa Azure Event Hubs jest włączona. |
spring.cloud.azure.eventhubs.connection-string |
Sznurek | Wartość parametrów połączenia dla przestrzeni nazw usługi Event Hubs. |
spring.cloud.azure.eventhubs.namespace |
Sznurek | Wartość przestrzeni nazw usługi Event Hubs, stanowiąca prefiks nazwy FQDN. FQDN powinien mieć postać NamespaceName.DomainName |
spring.cloud.azure.eventhubs.processor.checkpoint-store.account-name |
Sznurek | Nazwa konta magazynu. |
spring.cloud.azure.eventhubs.processor.checkpoint-store.account-key |
Sznurek | Klucz dostępu do konta magazynu. |
spring.cloud.azure.eventhubs.processor.checkpoint-store.container-name |
Sznurek | Nazwa kontenera magazynu. |
Podstawowy sposób użycia
Niestandardowy konwerter komunikatów usługi Event Hubs
Istnieją dwa sposoby konfigurowania konwertera komunikatów usługi Event Hubs:
Skonfiguruj następującą właściwość, aby domyślny konwerter komunikatów Event Hubs używał komponentu
ObjectMapper, który może być niestandardowym komponentemObjectMapperlub komponentem zarządzanym przez Spring Boot:spring: cloud: azure: message-converter: isolated-object-mapper: falseZdefiniuj bezpośrednio fasolę konwertera komunikatów usługi Event Hubs:
@Bean AzureMessageConverter<EventData, EventData> eventHubsMessageConverter() { JsonMapper jsonMapper = JsonMapper.builder().addModule(new JavaTimeModule()).build(); return new EventHubsMessageConverter(jsonMapper); }
Wysyłanie komunikatów do usługi Azure Event Hubs
Aby wysyłać komunikaty, wykonaj następujące czynności:
Wypełnij opcje konfiguracji poświadczeń przy użyciu jednej z następujących metod:
Aby skonfigurować poświadczenia jako
DefaultAzureCredential, skonfiguruj następujące właściwości w pliku application.yml:spring: cloud: azure: eventhubs: namespace: ${AZURE_EVENT_HUBS_NAMESPACE} processor: checkpoint-store: container-name: ${CHECKPOINT-CONTAINER} account-name: ${CHECKPOINT-STORAGE-ACCOUNT}Jeśli poświadczenia są podawane jako parametry połączenia, skonfiguruj następujące właściwości w pliku 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}W przypadku poświadczeń jako tożsamości zarządzanych skonfiguruj następujące właściwości w pliku application.yml:
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}W przypadku poświadczeń jednostki usługi skonfiguruj następujące właściwości w pliku application.yml:
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}
Uwaga
Następujące wartości są dozwolone dla tenant-id: common, organizations, consumerslub identyfikator dzierżawy. Aby uzyskać więcej informacji na temat tych wartości, zobacz sekcję Użyto nieprawidłowego punktu końcowego (kont osobistych i organizacji) sekcji Błąd AADSTS50020 — konto użytkownika od dostawcy tożsamości nie istnieje wdzierżawy. Aby uzyskać informacje na temat konwertowania aplikacji z jedną dzierżawą, zobacz Convert single-tenant app to multitenant on Microsoft Entra ID.
EventHubsTemplatejest automatycznie konfigurowana i można ją automatycznie połączyć bezpośrednio z własnymi fasolami, jak pokazano w poniższym przykładzie:@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(); } }
Odbieranie komunikatów z usługi Azure Event Hubs
Aby odbierać komunikaty, wykonaj następujące czynności:
Wypełnij opcje konfiguracji poświadczeń.
Dodaj adnotację
@EnableAzureMessaging, jak pokazano w poniższym przykładzie. Ta adnotacja powoduje wykrywanie metod oznaczonych adnotacją@EventHubsListener, niejawnie tworząc kontener nasłuchiwania komunikatów.@SpringBootApplication @EnableAzureMessaging public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } }Uwaga
Aby uniknąć powtórzeń, od wersji
5.21.0adnotacja włączająca@EnableAzureMessagingw Spring Cloud Azure Auto-configure jest włączana automatycznie.Gdy infrastruktura usługi Event Hubs jest dostępna, możesz opatrzyć dowolny bean adnotacją
@EventHubsListener, aby utworzyć punkt końcowy nasłuchiwania. Następujący składnik tworzy punkt końcowy nasłuchiwania dla centrum zdarzeńEVENT_HUB_NAMEi grupy odbiorców$Default:@Component public class MyBean { @EventHubsListener(destination = "EVENT_HUB_NAME", group = "$Default") public void processMessage(String content) { // ... } }
Przykłady
Więcej informacji można znaleźć w azure-spring-boot-samples repozytorium w serwisie GitHub.