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 Barramento de Serviço do Azure do Spring Messaging. O Spring Framework fornece amplo suporte para integração com sistemas de mensagens.
Barramento de Serviço do Azure Spring Messaging
Conceitos principais
O Barramento de Serviço do Azure é um agente de mensagens empresarial totalmente gerenciado com filas de mensagens e tópicos de publicação/assinatura. O projeto Spring Messaging para Barramento de Serviço 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 mensagens. Ele também fornece suporte para POJOs controlados por mensagem com anotações @ServiceBusListener e um contêiner de ouvinte . Essas bibliotecas promovem o uso da injeção de dependência e da configuração declarativa. Em todos esses casos, você pode ver semelhanças com o suporte do JMS no suporte do Spring Framework e do RabbitMQ no Spring AMQP.
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-servicebus</artifactId>
</dependency>
Configuração
A biblioteca fornece as seguintes opções de configuração para ServiceBusTemplate e @ServiceBusListener:
| Propriedade | Tipo | Descrição |
|---|---|---|
spring.cloud.azure.message-converter.isolated-object-mapper |
booleano | Se um bean ObjectMapper isolado é usado para conversor de mensagens do Barramento de Serviço. Habilitado por padrão. |
spring.cloud.azure.servicebus.enabled |
booleano | Se um Barramento de Serviço do Azure está habilitado. |
spring.cloud.azure.servicebus.connection-string |
fio | Valor da cadeia de conexão do Namespace do Barramento de Serviço. |
spring.cloud.azure.servicebus.custom-endpoint-address |
fio | O endereço de ponto de extremidade personalizado a ser usado ao se conectar ao Barramento de Serviço. |
spring.cloud.azure.servicebus.namespace |
fio | Valor do Namespace do Barramento de Serviço, que é o prefixo do FQDN. Um FQDN deve ser composto por NamespaceName.DomainName |
spring.cloud.azure.servicebus.entity-type |
fio | Tipo de entidade de um Barramento de Serviço do Azure. |
Uso Básico
Conversor de mensagens personalizado do Barramento de Serviço
Há duas maneiras de configurar o conversor de mensagens do Barramento de Serviço:
Configure a seguinte propriedade para que o conversor de mensagens do Barramento de Serviço 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 do Barramento de Serviço diretamente:
@Bean AzureMessageConverter<ServiceBusReceivedMessage, ServiceBusMessage> serviceBusMessageConverter() { JsonMapper jsonMapper = JsonMapper.builder().addModule(new JavaTimeModule()).build(); return new ServiceBusMessageConverter(jsonMapper); }
Enviar mensagens para o Barramento de Serviço do Azure
Use as seguintes etapas para enviar 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: servicebus: namespace: ${AZURE_SERVICE_BUS_NAMESPACE} entity-type: ${AZURE_SERVICE_BUS_ENTITY_TYPE}Para credenciais como cadeia de conexão, configure as seguintes propriedades no arquivo application.yml:
spring: cloud: azure: servicebus: connection-string: ${AZURE_SERVICE_BUS_CONNECTION_STRING} entity-type: ${AZURE_SERVICE_BUS_ENTITY_TYPE}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> servicebus: namespace: ${AZURE_SERVICE_BUS_NAMESPACE} entity-type: ${AZURE_SERVICE_BUS_ENTITY_TYPE}
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> servicebus: namespace: ${AZURE_SERVICE_BUS_NAMESPACE} entity-type: ${AZURE_SERVICE_BUS_ENTITY_TYPE}
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.
ServiceBusTemplateé configurado automaticamente e você pode inseri-lo automaticamente em seus próprios grãos, conforme mostrado no exemplo a seguir:@Component public class MyBean { private final ServiceBusTemplate serviceBusTemplate; public MyBean(ServiceBusTemplate serviceBusTemplate) { this.serviceBusTemplate = serviceBusTemplate; } public void someMethod() { this.serviceBusTemplate.sendAsync('QUEUE_NAME', MessageBuilder.withPayload("Hello world").build()).subscribe(); } }
Receber mensagens do Barramento de Serviço do Azure
Use as seguintes etapas para receber mensagens:
Preencha as opções de configuração de credencial.
Adicione a anotação
@EnableAzureMessaging, que dispara a descoberta de métodos anotados com@ServiceBusListener, criando o contêiner do ouvinte de mensagens nos covers.@SpringBootApplication @EnableAzureMessaging public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } }Observação
Para evitar a repetição, desde a versão
5.21.0, a anotação habilitada automaticamente para configuração@EnableAzureMessagingautomática do Spring Cloud Azure.Quando a infraestrutura do ServiceBus estiver presente, você poderá anotar qualquer bean com
@ServiceBusListenerpara criar um ponto de extremidade do ouvinte. O seguinte componente cria um ponto de extremidade de ouvinte na filaQUEUE_NAME:@Component public class MyBean { @ServiceBusListener(destination = "QUEUE_NAME") public void processMessage(String content) { // ... } }
Personalizar propriedades do cliente do Barramento de Serviço
Os desenvolvedores podem usar AzureServiceClientBuilderCustomizer para personalizar as propriedades do Cliente do Barramento de Serviço. O exemplo a seguir personaliza a propriedade sessionIdleTimeout em ServiceBusClientBuilder:
@Bean
public AzureServiceClientBuilderCustomizer<ServiceBusClientBuilder.ServiceBusSessionProcessorClientBuilder> customizeBuilder() {
return builder -> builder.sessionIdleTimeout(Duration.ofSeconds(10));
}
Exemplos
Para obter mais informações, consulte o azure-spring-boot-samples repositório no GitHub.