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 tutorial demonstra a utilização de Spring Boot Starter para Azure Service Bus JMS para enviar mensagens para e receber mensagens do Service Bus queues e topics.
O Azure fornece uma plataforma de mensagens assíncrona chamada Barramento de Serviço do Azure ("Barramento de Serviço") que se baseia no padrão Advanced Message Queueing Protocol 1.0 ("AMQP 1.0"). Você pode usar o Service Bus em toda a variedade de plataformas do Azure com suporte.
O Spring Boot Starter para Azure Service Bus JMS fornece integração do Spring JMS com o Service Bus.
O vídeo a seguir descreve como integrar aplicativos Spring JMS com o Azure Service Bus usando JMS 2.0.
Neste tutorial, incluímos dois métodos de autenticação: autenticação Microsoft Entra e autenticação SAS (Assinaturas de Acesso Compartilhado). A guia Sem senha mostra a autenticação do Microsoft Entra e a guia Cadeia de conexão mostra a autenticação SAS.
A autenticação do Microsoft Entra é um mecanismo para se conectar ao Azure Service Bus JMS usando identidades definidas na ID do Microsoft Entra. Com a autenticação do Microsoft Entra, você pode gerenciar identidades de usuário de banco de dados e outros serviços da Microsoft em um local central, o que simplifica o gerenciamento de permissões.
A autenticação SAS utiliza a cadeia de conexão do namespace do Barramento de Serviço do Azure para o acesso delegado ao Barramento de Serviço JMS. Se você optar por usar Assinaturas de Acesso Compartilhado como credenciais, precisará gerenciar a cadeia de conexão sozinho.
Pré-requisitos
Uma assinatura do Azure - crie uma gratuitamente.
Java Development Kit (JDK) versão 8 ou superior.
Apache Maven, versão 3.2 ou superior.
Uma fila ou tópico para o Barramento de Serviço do Azure. Se você não tiver um, consulte Usar o portal do Azure para criar um namespace do Service Bus e uma fila ou Usar o portal do Azure para criar um tópico do Service Bus e assinaturas para o tópico.
Um aplicativo Spring Boot. Se você não tiver um, crie um projeto Maven com o Spring Initializr. Certifique-se de selecionar Projeto Maven e, em Dependências, adicione a dependência do Spring Web e, em seguida, selecione Java versão 8 ou superior.
Importante
O Spring Boot versão 2.5 ou superior é necessário para concluir as etapas neste tutorial.
Enviar e receber mensagens do Azure Service Bus
Com uma fila ou tópico para o Azure Service Bus, pode enviar e receber mensagens usando o Spring Cloud Azure Service Bus JMS.
Para instalar o módulo Spring Cloud Azure Service Bus JMS Starter, adicione as seguintes dependências ao seu arquivo pom.xml :
A lista de materiais (BOM) do Azure Spring Cloud:
<dependencyManagement> <dependencies> <dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-dependencies</artifactId> <version>6.0.0</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>Nota
Se estiver a utilizar o Spring Boot 3.0.x-3.4.x, certifique-se de que define a
spring-cloud-azure-dependenciesversão como5.23.0.Se estiver a utilizar o Spring Boot 2.x, certifique-se de que define a
spring-cloud-azure-dependenciesversão como4.20.0.Esta lista de materiais (BOM) deve ser configurada na
<dependencyManagement>seção do seu arquivo pom.xml. Isso garante que todas as dependências do Spring Cloud Azure estejam usando a mesma versão.Para obter mais informações sobre a versão usada para essa lista técnica, consulte Qual versão do Spring Cloud Azure devo usar.
O artefato JMS Starter do Spring Cloud Azure Service Bus:
<dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-starter-servicebus-jms</artifactId> </dependency>
Codificar a aplicação
Use as etapas a seguir para configurar seu aplicativo para usar uma fila ou tópico do Service Bus para enviar e receber mensagens.
Configure as credenciais do Service Bus adicionando as seguintes propriedades ao arquivo application.properties .
Nota
O JMS do Barramento de Serviço do Azure dá suporte ao uso da ID do Microsoft Entra para autorizar solicitações a recursos do Barramento de Serviço. Com o Microsoft Entra ID, você pode usar o controle de acesso baseado em função do Azure (Azure RBAC) para conceder permissões a uma entidade de segurança, que pode ser um usuário ou uma entidade de serviço de aplicativo.
Importante
Antes de começar, certifique-se de que atribuiu a função de Proprietário de Dados do Barramento de Serviço do Azure à conta do Microsoft Entra que está a utilizar atualmente. Para obter mais informações, consulte Atribuir funções do Azure usando o portal do Azure.
spring.jms.servicebus.namespace=<ServiceBusNamespace> spring.jms.servicebus.pricing-tier=<ServiceBusPricingTier> spring.jms.servicebus.passwordless-enabled=true spring.jms.listener.receive-timeout=60000A tabela a seguir descreve os campos na configuração:
Campo Descrição spring.jms.servicebus.namespaceEspecifique o namespace obtido em sua instância de serviço do Service Bus no portal do Azure. spring.jms.servicebus.pricing-tierEspecifique a camada de preço do barramento de serviço. Os valores suportados são premiumestandard. A camada Premium usa o Java Message Service (JMS) 2.0, enquanto a camada padrão usa o JMS 1.1 para interagir com o Barramento de Serviço do Azure.spring.jms.servicebus.passwordless-enabledEspecifique se deseja usar sem senha. spring.jms.listener.receive-timeoutPor padrão, o valor de tempo limite de recebimento é 1000. Recomendamos que você o defina como 60000 Adicione
@EnableJmspara habilitar o suporte para pontos de extremidade anotados para ouvinte JMS. UseJmsTemplatepara enviar e@JmsListenerreceber mensagens, conforme mostrado no exemplo a seguir:import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.jms.annotation.EnableJms; import org.springframework.boot.CommandLineRunner; import org.springframework.jms.annotation.JmsListener; import org.springframework.jms.core.JmsTemplate; @SpringBootApplication @EnableJms public class ServiceBusJMSQueueApplication implements CommandLineRunner { private static final Logger LOGGER = LoggerFactory.getLogger(ServiceBusJMSQueueApplication.class); private static final String QUEUE_NAME = "<QueueName>"; @Autowired private JmsTemplate jmsTemplate; public static void main(String[] args) { SpringApplication.run(ServiceBusJMSQueueApplication.class, args); } @Override public void run(String... args) { LOGGER.info("Sending message"); jmsTemplate.convertAndSend(QUEUE_NAME, "Hello World"); } @JmsListener(destination = QUEUE_NAME, containerFactory = "jmsListenerContainerFactory") public void receiveMessage(String message) { LOGGER.info("Message received: {}", message); } }Substitua
<QueueName>pelo nome da sua própria fila configurada no seu espaço de nomes do Service Bus.Gorjeta
Neste tutorial, não há operações de autenticação nas configurações ou no código. No entanto, conectar-se aos serviços do Azure requer autenticação. Para concluir a autenticação, você precisa usar a Identidade do Azure. O Spring Cloud Azure usa
DefaultAzureCredential, que a biblioteca Azure Identity fornece para ajudar a obter credenciais sem alterações de código.DefaultAzureCredentialSuporta vários métodos de autenticação e determina qual método usar em tempo de execução. Essa abordagem permite que seu aplicativo use diferentes métodos de autenticação em ambientes diferentes (como ambientes locais e de produção) sem implementar código específico do ambiente. Para obter mais informações, consulte DefaultAzureCredential.Para concluir a autenticação em ambientes de desenvolvimento local, você pode usar a CLI do Azure, o Visual Studio Code, o PowerShell ou outros métodos. Para obter mais informações, consulte Autenticação do Azure em ambientes de desenvolvimento Java. Para concluir a autenticação em ambientes de hospedagem do Azure, recomendamos o uso da identidade gerenciada atribuída pelo usuário. Para obter mais informações, consulte O que são identidades gerenciadas para recursos do Azure?
Inicie a aplicação. Deve ver
Sending messageeHello Worldpostados no registo da aplicação, conforme mostrado no exemplo de saída a seguir:Sending message Message received: Hello World
Implantar no Azure Spring Apps
Agora que você tem o aplicativo Spring Boot em execução localmente, é hora de movê-lo para a produção. O Azure Spring Apps facilita a implantação de aplicativos Spring Boot no Azure sem alterações de código. O serviço gerencia a infraestrutura dos aplicativos Spring para que os desenvolvedores possam se concentrar em seu código. O Azure Spring Apps fornece gerenciamento do ciclo de vida usando monitoramento e diagnóstico abrangentes, gerenciamento de configuração, descoberta de serviços, integração de CI/CD, implantações azul-verde e muito mais. Para implantar seu aplicativo no Azure Spring Apps, consulte Implantar seu primeiro aplicativo no Azure Spring Apps.