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 Azure Storage 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 geralmente são usadas para criar um backlog de trabalho para processar de forma assíncrona. O projeto Spring Messaging for Azure Queue Storage 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 | Se um bean ObjectMapper isolado é usado para conversor de mensagens da Fila de Armazenamento. Habilitado 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 |
fio | Valor da cadeia de conexão 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 seguinte propriedade para que o conversor de mensagens da Fila de Armazenamento padrão use um
ObjectMapperbean, que pode ser o bean personalizadoObjectMapperou um gerenciado pelo Spring Boot:spring: cloud: azure: message-converter: isolated-object-mapper: falseDefina o bean do conversor de mensagens da Fila de Armazenamento diretamente:
@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 como entidade de serviço, configure as seguintes propriedades em seu 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.