Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. 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 suporte extensivo para integração com sistemas de mensagens.
Spring Messaging Fila de Armazenamento do Azure
Conceitos-chave
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 de capacidade total de uma conta de armazenamento. As filas são comumente usadas para criar uma lista de pendências de trabalho para processar de forma assíncrona. O projeto Spring Messaging for Armazenamento de Filas do Azure aplica os principais conceitos 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 de injeção de dependência e 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 | Se um bean isolado do ObjectMapper é usado para o conversor de mensagens da fila de armazenamento. Ativado por padrão. |
spring.cloud.azure.storage.queue.enabled |
Booleano | Se uma Fila de Armazenamento do Azure está habilitada. |
spring.cloud.azure.storage.queue.connection-string |
Cordão | Valor da cadeia de conexão do namespace da fila de armazenamento. |
spring.cloud.azure.storage.queue.accountName |
Cordão | Nome da conta da Fila de Armazenamento. |
spring.cloud.azure.storage.queue.accountKey |
Cordão | Chave da conta da Fila de Armazenamento. |
Utilização básica
Conversor de mensagens da fila de armazenamento personalizada
Há duas maneiras de configurar o conversor de mensagens da fila de armazenamento:
Configure a propriedade seguinte para que o conversor de mensagens predefinido da Storage Queue utilize um bean
ObjectMapper, que pode ser o seu beanObjectMapperpersonalizado ou um bean gerido pelo Spring Boot:spring: cloud: azure: message-converter: isolated-object-mapper: falseDefina diretamente o bean conversor de mensagens da fila de armazenamento:
@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 credenciais usando uma das seguintes abordagens:
Para credenciais como
DefaultAzureCredential, configure as seguintes propriedades no arquivo 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 seguintes valores são permitidos para tenant-id: common, organizations, consumersou o ID do locatário. Para obter mais informações sobre esses valores, consulte a secção Usou o ponto de extremidade errado (contas pessoais e de organização) na secção Erro AADSTS50020 - A conta de utilizador do provedor de identidade não existe no inquilino. Para obter informações sobre 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 principal de serviço, configure as seguintes propriedades no ficheiro 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 seguintes valores são permitidos para tenant-id: common, organizations, consumersou o ID do locatário. Para obter mais informações sobre esses valores, consulte a secção Usou o ponto de extremidade errado (contas pessoais e de organização) na secção Erro AADSTS50020 - A conta de utilizador do provedor de identidade não existe no inquilino. Para obter informações sobre 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 automaticamente em seus próprios beans 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 mais informações, consulte o azure-spring-boot-samples repositório no GitHub.