Usar o JMS no Spring para acessar o Barramento de Serviço do Azure
Este tutorial demonstra como usar o Spring Boot Starter para JMS do Barramento de Serviço do Azure para enviar e receber mensagens do Service Bus queues
e topics
do .
O Azure fornece uma plataforma de mensagens assíncrona chamada Barramento de Serviço do Azure ("Barramento de Serviço") baseada no padrão Advanced Message Queueing Protocol 1.0 ("AMQP 1.0"). Você pode usar o Barramento de Serviço em toda a gama de plataformas do Azure com suporte.
O Spring Boot Starter para JMS do Barramento de Serviço do Azure fornece integração do Spring JMS com o Service Bus.
O vídeo a seguir descreve como integrar aplicativos Spring JMS com o Barramento de Serviço do Azure 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 JMS do Barramento de Serviço do Azure usando identidades definidas na ID do Microsoft Entra. Com a autenticação do Microsoft Entra, você pode gerenciar as identidades de usuários do banco de dados e outros serviços da Microsoft em uma só localização central, o que simplifica o gerenciamento de permissões.
A autenticação SAS usa a cadeia de conexão do namespace do Barramento de Serviço do Azure para o acesso delegado ao JMS do Barramento de Serviço. Se você optar por usar Assinaturas de Acesso Compartilhado como credenciais, precisará gerenciar a cadeia de conexão por conta própria.
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 Barramento de Serviço e uma fila ou Usar o portal do Azure para criar um tópico do Barramento de Serviço e assinaturas para o tópico.
Um aplicativo Spring Boot. Caso 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 deste tutorial.
Enviar e receber mensagens do Barramento de Serviço do Azure
Com uma fila ou tópico para o Barramento de Serviço do Azure, você pode enviar e receber mensagens usando o JMS do Spring Cloud Azure Service Bus.
Para instalar o módulo JMS Starter do Spring Cloud Azure Service Bus, adicione as seguintes dependências ao arquivo pom.xml :
A lista de materiais do Spring Cloud Azure (BOM):
<dependencyManagement> <dependencies> <dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-dependencies</artifactId> <version>5.11.0</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>
Observação
Se você estiver usando o Spring Boot 2.x, certifique-se de definir a
spring-cloud-azure-dependencies
versão como4.17.0
. Esta lista de materiais (BOM) deve ser configurada<dependencyManagement>
na seção do 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 esta BOM, consulte Qual versão do Spring Cloud Azure devo usar.O artefato inicial JMS do Spring Cloud Azure Service Bus:
<dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-starter-servicebus-jms</artifactId> </dependency>
Codificar o aplicativo
Use as etapas a seguir para configurar seu aplicativo para usar uma fila ou tópico do Barramento de Serviço para enviar e receber mensagens.
Configure as credenciais do Service Bus adicionando as seguintes propriedades ao arquivo application.properties .
Observação
O JMS do Barramento de Serviço do Azure dá suporte ao uso da ID do Microsoft Entra para autorizar solicitações para recursos do Barramento de Serviço. Com a ID do Microsoft Entra, você pode usar o controle de acesso baseado em função do Azure (RBAC do Azure) 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, verifique se você atribuiu a função Proprietário de Dados do Barramento de Serviço do Azure à conta do Microsoft Entra que está usando no momento. Para obter mais informações, confira 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=60000
A tabela a seguir descreve os campos na configuração:
Campo Descrição spring.jms.servicebus.namespace
Especifique o namespace obtido na instância de serviço do Service Bus no portal do Azure. spring.jms.servicebus.pricing-tier
Especifique o tipo de preço de seu barramento de serviço. Os valores suportados são premium e standard. A camada Premium usa o JMS (Java Message Service) 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-enabled
Especifique se deseja usar sem senha. spring.jms.listener.receive-timeout
Por padrão, o valor de tempo limite de recebimento é 1000. Recomendamos que você o defina como 60000 Adicionar
@EnableJms
para habilitar o suporte para pontos de extremidade anotados do ouvinte JMS. UseJmsTemplate
para enviar e receber mensagens@JmsListener
, 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 fila no namespace do Barramento de Serviço.Dica
Neste tutorial, não há operações de autenticação nas configurações ou no código. No entanto, a conexão com os 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
o , que a biblioteca de Identidade do Azure fornece para ajudá-lo a obter credenciais sem alterações de código.DefaultAzureCredential
dá suporte a vários métodos de autenticação e determina qual método usar no runtime. Essa abordagem permite que seu aplicativo use métodos de autenticação diferentes 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 usar a identidade gerenciada atribuída pelo usuário. Para obter mais informações, confira O que são as identidades gerenciadas para recursos do Azure?
Inicie o aplicativo. Você deve ver
Sending message
eHello World
postar no log do aplicativo, conforme mostrado na saída de exemplo 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. Os Aplicativos Spring do Azure facilitam a implantação de aplicativos Spring Boot no Azure sem alterações de código. O serviço gerencia a infraestrutura dos aplicativos do Spring para que os desenvolvedores possam se concentrar no código. O Azure Spring Apps fornece gerenciamento de ciclo de vida usando monitoramento e diagnóstico abrangentes, gerenciamento de configuração, descoberta de serviços, integração de CI/CD, implantações em “blue-green” e muito mais. Para implantar seu aplicativo nos Aplicativos Spring do Azure, consulte Implantar seu primeiro aplicativo nos Aplicativos Spring do Azure.
Próximas etapas
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de