Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье описывается, как использовать Центры событий Azure Spring Cloud и Spring Messaging Azure. Spring Framework обеспечивает обширную поддержку интеграции с системами обмена сообщениями.
Spring Messaging в Центрах событий Azure
Основные понятия
Центры событий Azure — это собственная служба потоковой передачи данных в облаке, которая может передавать миллионы событий в секунду с низкой задержкой из любого источника в любое место назначения. Проект Spring Messaging для Центров событий Azure применяет основные понятия Spring к разработке решений для обмена сообщениями на основе центров событий. Он предоставляет шаблон как высокоуровневую абстракцию для отправки сообщений. Также обеспечивает поддержку простых объектов Java (POJO), управляемых сообщениями, с аннотациями @EventHubsListener и контейнером слушателя. Эти библиотеки способствуют использованию внедрения зависимостей и декларативной конфигурации. Во всех этих случаях можно заметить сходство с поддержкой JMS в Spring Framework и поддержкой RabbitMQ в Spring AMQP.
Настройка зависимостей
<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>
Конфигурация
Библиотека предоставляет следующие параметры конфигурации для EventHubsTemplate и @EventHubsListener:
| Недвижимость | Тип | Описание |
|---|---|---|
spring.cloud.azure.message-converter.isolated-object-mapper |
булевый | Используется ли изолированный объект ObjectMapper для преобразователя сообщений Центров событий. Включен по умолчанию. |
spring.cloud.azure.eventhubs.enabled |
булевый | Включена ли служба Центров событий Azure. |
spring.cloud.azure.eventhubs.connection-string |
Струна | Значение строки подключения для пространства имен Центров событий. |
spring.cloud.azure.eventhubs.namespace |
Струна | Значение пространства имен Event Hubs, которое является префиксом FQDN. Полное доменное имя должно состоять из NamespaceName.DomainName |
spring.cloud.azure.eventhubs.processor.checkpoint-store.account-name |
Струна | Имя учетной записи хранения. |
spring.cloud.azure.eventhubs.processor.checkpoint-store.account-key |
Струна | Ключ доступа к учетной записи хранения. |
spring.cloud.azure.eventhubs.processor.checkpoint-store.container-name |
Струна | Имя контейнера хранилища. |
Базовое использование
Настраиваемый преобразователь сообщений Центров событий
Существует два способа настройки преобразователя сообщений Центров событий.
Настройте следующее свойство так, чтобы преобразователь сообщений Event Hubs, используемый по умолчанию, использовал компонент
ObjectMapper, который может быть вашим пользовательским компонентомObjectMapperили компонентом, управляемым Spring Boot:spring: cloud: azure: message-converter: isolated-object-mapper: falseОпределите бин преобразователя сообщений Event Hubs напрямую:
@Bean AzureMessageConverter<EventData, EventData> eventHubsMessageConverter() { JsonMapper jsonMapper = JsonMapper.builder().addModule(new JavaTimeModule()).build(); return new EventHubsMessageConverter(jsonMapper); }
Отправка сообщений в Центры событий Azure
Чтобы отправить сообщения, выполните следующие действия.
Заполните параметры конфигурации учетных данных с помощью одного из следующих подходов:
Для учетных данных в качестве
DefaultAzureCredentialнастройте следующие свойства в файле application.yml:spring: cloud: azure: eventhubs: namespace: ${AZURE_EVENT_HUBS_NAMESPACE} processor: checkpoint-store: container-name: ${CHECKPOINT-CONTAINER} account-name: ${CHECKPOINT-STORAGE-ACCOUNT}Для учетных данных в качестве строки подключения настройте следующие свойства в файле 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}Для учетных данных в качестве управляемых удостоверений настройте следующие свойства в файле 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}Для учетных данных в качестве субъекта-службы настройте следующие свойства в файле 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}
Примечание.
Для tenant-idразрешены следующие значения: common, organizations, consumersили идентификатор клиента. Дополнительные сведения об этих значениях см. в разделе Используется неправильная конечная точка (личные учетные записи и учетные записи организации) раздела Ошибка AADSTS50020 - Учетная запись пользователя от поставщика удостоверений не существует в арендаторе. Сведения о преобразовании вашего однопользовательского приложения см. в разделе Преобразование однопользовательского приложения в многопользовательское в Microsoft Entra ID.
EventHubsTemplateавтоматически конфигурируется, и вы можете напрямую автоматически внедрить его в свои бины, как показано в следующем примере:@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
Чтобы получать сообщения, выполните следующие действия.
Заполните параметры конфигурации учетных данных.
Добавьте заметку
@EnableAzureMessaging, как показано в следующем примере. Эта аннотация запускает поиск методов, аннотированных с помощью@EventHubsListener, и за кулисами создает контейнер слушателя сообщений.@SpringBootApplication @EnableAzureMessaging public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } }Примечание.
Чтобы избежать повторения, начиная с версии
5.21.0, аннотация@EnableAzureMessagingавтоматически включается в Spring Cloud Azure Auto-configure.Если инфраструктура Event Hubs доступна, вы можете аннотировать любой bean-компонент с помощью
@EventHubsListener, чтобы создать конечную точку listener. Следующий компонент создает конечную точку прослушивателя в концентраторе событийEVENT_HUB_NAMEи группе потребителей$Default:@Component public class MyBean { @EventHubsListener(destination = "EVENT_HUB_NAME", group = "$Default") public void processMessage(String content) { // ... } }
Образцы
Дополнительные сведения см. в репозитории azure-spring-boot-samples на сайте GitHub.