Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Este artigo descreve como você pode usar o Spring Cloud Azure e o Spring Messaging Armazenamento do Azure Queue. O Spring Framework fornece amplo suporte para integração com sistemas de mensagens.
Fila de Armazenamento do Azure Spring Messaging
Conceitos principais
O Armazenamento de Filas do Azure é um serviço para armazenar um grande número de mensagens. Você acessa mensagens de qualquer lugar do mundo por meio de chamadas autenticadas usando HTTP ou HTTPS. Uma mensagem de fila pode ter até 64 KB de tamanho. Uma fila pode conter milhões de mensagens, até o limite total de capacidade de uma conta de armazenamento. As filas são comumente usadas para criar uma fila de trabalho pendente para processamento assíncrono. O projeto Spring Messaging for Armazenamento de Filas do Azure aplica conceitos básicos do Spring ao desenvolvimento de soluções de mensagens baseadas em barramento de serviço. Ele fornece um modelo como uma abstração de alto nível para enviar e receber mensagens. Essas bibliotecas promovem o uso da injeção de dependência e da configuração declarativa.
Configuração de dependência
<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>
Configuração
A biblioteca fornece as seguintes opções de configuração para StorageQueueTemplate:
| Propriedade | Tipo | Descrição |
|---|---|---|
spring.cloud.azure.message-converter.isolated-object-mapper |
booleano | Indica se um bean ObjectMapper isolado é usado no conversor de mensagens da Fila de Armazenamento. Habilitado por padrão. |
spring.cloud.azure.storage.queue.enabled |
booleano | Indica se uma fila de armazenamento do Azure está habilitada. |
spring.cloud.azure.storage.queue.connection-string |
fio | Valor da string de conexão do namespace da fila de armazenamento. |
spring.cloud.azure.storage.queue.accountName |
fio | Nome da conta da Fila de Armazenamento. |
spring.cloud.azure.storage.queue.accountKey |
fio | Chave da conta da Fila de Armazenamento. |
Uso Básico
Conversor de mensagens da Fila de Armazenamento Personalizada
Há duas maneiras de configurar o conversor de mensagens da Fila de Armazenamento:
Configure a propriedade a seguir para que o conversor de mensagens padrão da fila de armazenamento use um bean
ObjectMapper, que pode ser seu beanObjectMapperpersonalizado ou um bean gerenciado pelo Spring Boot:spring: cloud: azure: message-converter: isolated-object-mapper: falseDefina diretamente o bean do conversor de mensagens do Storage Queue:
@Bean AzureMessageConverter<QueueMessageItem, QueueMessageItem> storageQueueMessageConverter() { JsonMapper jsonMapper = JsonMapper.builder().addModule(new JavaTimeModule()).build(); return new ServiceBusMessageConverter(jsonMapper); }
Enviar e receber mensagens para a Fila de Armazenamento do Azure
Use as seguintes etapas para enviar e receber mensagens:
Preencha as opções de configuração de credencial usando uma das seguintes abordagens:
Para credenciais como
DefaultAzureCredential, configure as seguintes propriedades em seu arquivo de application.yml:spring: cloud: azure: storage: queue: account-name: ${AZURE_STORAGE_QUEUE_ACCOUNT_NAME}Para credenciais como cadeia de conexão, configure as seguintes propriedades no arquivo application.yml:
spring: cloud: azure: storage: queue: connection-string: ${AZURE_STORAGE_QUEUE_CONNECTION_STRING}Para credenciais como identidades gerenciadas, configure as seguintes propriedades em seu arquivo 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}
Observação
Os valores a seguir são permitidos para tenant-id: common, organizations, consumersou a ID do locatário. Para obter mais informações sobre esses valores, consulte a seção Uso do ponto de extremidade incorreto (contas pessoais e de organização) do Error AADSTS50020 – A conta de usuário do provedor de identidade não existe no locatário. Para saber como converter seu aplicativo de locatário único, consulte Converter aplicativo de locatário único em multilocatário no Microsoft Entra ID.
Para credenciais de service principal, configure as seguintes propriedades no arquivo 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}
Observação
Os valores a seguir são permitidos para tenant-id: common, organizations, consumersou a ID do locatário. Para obter mais informações sobre esses valores, consulte a seção Uso do ponto de extremidade incorreto (contas pessoais e de organização) do Error AADSTS50020 – A conta de usuário do provedor de identidade não existe no locatário. Para saber como converter seu aplicativo de locatário único, consulte Converter aplicativo de locatário único em multilocatário no Microsoft Entra ID.
StorageQueueTemplateé configurado automaticamente. Você pode conectá-lo diretamente em seus próprios feijões para enviar ou receber mensagens, conforme mostrado no exemplo a seguir:@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(); // ... } }
Exemplos
Para obter mais informações, consulte o azure-spring-boot-samples repositório no GitHub.