Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье описывается, как использовать очередь службы хранилища Azure Spring Cloud и Spring Messaging Azure. Spring Framework обеспечивает обширную поддержку интеграции с системами обмена сообщениями.
Очереди хранилища Azure для Spring Messaging
Основные понятия
Хранилище очередей Azure — это сервис для хранения большого числа сообщений. Доступ к сообщениям возможен из любой точки мира с помощью вызовов с проверкой подлинности по протоколу HTTP или HTTPS. Максимальный размер сообщения в очереди составляет 64 КБ. Очередь может содержать миллионы сообщений до общего предела емкости учетной записи хранения. Очереди обычно используются для создания списка невыполненных заданий для асинхронной обработки. Проект Spring Messaging для хранилища очередей Azure применяет основные понятия Spring к разработке решений обмена сообщениями на основе служебной шины. Он предоставляет шаблон как высокоуровневую абстракцию для отправки и получения сообщений. Эти библиотеки способствуют использованию внедрения зависимостей и декларативной конфигурации.
Настройка зависимостей
<dependency>
<groupId>com.azure.spring</groupId>
<artifactId>spring-cloud-azure-starter</artifactId>
</dependency>
<dependency>
<groupId>com.azure.spring</groupId>
<artifactId>spring-messaging-azure-storage-queue</artifactId>
</dependency>
Конфигурация
Библиотека предоставляет следующие параметры конфигурации для StorageQueueTemplate:
| Недвижимость | Тип | Описание |
|---|---|---|
spring.cloud.azure.message-converter.isolated-object-mapper |
булевый | Используется ли изолированный объект ObjectMapper для преобразователя сообщений очереди хранилища. Включен по умолчанию. |
spring.cloud.azure.storage.queue.enabled |
булевый | Включена ли очередь службы хранилища Azure. |
spring.cloud.azure.storage.queue.connection-string |
Струна | Строковое значение строки подключения пространства имен очереди хранилища. |
spring.cloud.azure.storage.queue.accountName |
Струна | Имя учетной записи очереди хранения. |
spring.cloud.azure.storage.queue.accountKey |
Струна | Ключ учетной записи очереди хранения. |
Базовое использование
Преобразователь сообщений очереди пользовательского хранилища
Существует два способа настройки преобразователя сообщений очереди хранилища.
Настройте следующее свойство, чтобы преобразователь сообщений очереди хранилища по умолчанию использовал
ObjectMapperbean, который может быть пользовательскимObjectMapperбобом или одним из них, управляемым Spring Boot:spring: cloud: azure: message-converter: isolated-object-mapper: falseОпределите преобразователь сообщений очереди хранилища напрямую:
@Bean AzureMessageConverter<QueueMessageItem, QueueMessageItem> storageQueueMessageConverter() { JsonMapper jsonMapper = JsonMapper.builder().addModule(new JavaTimeModule()).build(); return new ServiceBusMessageConverter(jsonMapper); }
Отправка и получение сообщений в очередь службы хранилища Azure
Выполните следующие действия для отправки и получения сообщений:
Заполните параметры конфигурации учетных данных с помощью одного из следующих подходов:
Для учетных данных в качестве
DefaultAzureCredentialнастройте следующие свойства в файле application.yml:spring: cloud: azure: storage: queue: account-name: ${AZURE_STORAGE_QUEUE_ACCOUNT_NAME}Для учетных данных в качестве строки подключения настройте следующие свойства в файле application.yml:
spring: cloud: azure: storage: queue: connection-string: ${AZURE_STORAGE_QUEUE_CONNECTION_STRING}Для учетных данных в качестве управляемых удостоверений настройте следующие свойства в файле application.yml:
spring: cloud: azure: credential: managed-identity-enabled: true client-id: ${AZURE_CLIENT_ID} profile: tenant-id: <tenant> storage: queue: account-name: ${AZURE_STORAGE_QUEUE_ACCOUNT_NAME}
Примечание.
Для tenant-idразрешены следующие значения: common, organizations, consumersили идентификатор клиента. Дополнительные сведения об этих значениях см. в разделе Используется неправильная конечная точка (личные учетные записи и учетные записи организации) раздела Ошибка AADSTS50020 - Учетная запись пользователя от поставщика удостоверений не существует в арендаторе. Сведения о преобразовании вашего однопользовательского приложения см. в разделе Преобразование однопользовательского приложения в многопользовательское в Microsoft Entra ID.
Для учетных данных в качестве субъекта-службы настройте следующие свойства в файле application.yml:
spring: cloud: azure: credential: client-id: ${AZURE_CLIENT_ID} client-secret: ${AZURE_CLIENT_SECRET} profile: tenant-id: <tenant> storage: queue: account-name: ${AZURE_STORAGE_QUEUE_ACCOUNT_NAME}
Примечание.
Для tenant-idразрешены следующие значения: common, organizations, consumersили идентификатор клиента. Дополнительные сведения об этих значениях см. в разделе Используется неправильная конечная точка (личные учетные записи и учетные записи организации) раздела Ошибка AADSTS50020 - Учетная запись пользователя от поставщика удостоверений не существует в арендаторе. Сведения о преобразовании вашего однопользовательского приложения см. в разделе Преобразование однопользовательского приложения в многопользовательское в Microsoft Entra ID.
StorageQueueTemplateнастроен автоматически. Вы можете автоматически включить его непосредственно в собственные бобы для отправки или получения сообщений, как показано в следующем примере:@Component public class MyBean { private final StorageQueueTemplate storageQueueTemplate; public MyBean(StorageQueueTemplate storageQueueTemplate) { this.storageQueueTemplate = storageQueueTemplate; } public void someMethod() { this.serviceBusTemplate.sendAsync('STORAGE_QUEUE_NAME', MessageBuilder.withPayload("Hello world").build()).subscribe(); } public void processMessage() { Message<?> message = storageQueueTemplate.receiveAsync('STORAGE_QUEUE_NAME', Duration.ofSeconds(30)).block(); // ... } }
Образцы
Дополнительные сведения см. в репозитории azure-spring-boot-samples на сайте GitHub.