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 usar Barramento de Serviço do Azure com a API JMS integrada à estrutura do Spring JMS.
Principais recursos
Conexão sem senha
A conexão sem senha usa Microsoft Entra autenticação para se conectar a serviços Azure sem armazenar credenciais no aplicativo, seus arquivos de configuração ou em variáveis de ambiente. A autenticação do Microsoft Entra é um mecanismo para conectar-se ao Barramento de Serviço do Azure usando identidades definidas no Microsoft Entra ID. Com Microsoft Entra autenticação, você pode gerenciar Barramento de Serviço e outras serviços Microsoft em um local central, o que simplifica o gerenciamento de permissões.
Como funciona
O Spring Cloud Azure primeiro cria um dos seguintes tipos de credenciais, dependendo da configuração de autenticação do aplicativo:
ClientSecretCredentialClientCertificateCredentialUsernamePasswordCredentialManagedIdentityCredential
Se nenhum desses tipos de credenciais for encontrado, a cadeia de credenciais por meio de DefaultTokenCredential será usada para obter credenciais de propriedades de aplicativo, variáveis de ambiente, identidade gerenciada ou IDEs. Para obter mais informações, consulte Spring Cloud Azure authentication.
Configuração de dependência
Adicione as dependências a seguir se você quiser migrar seu aplicativo Spring JMS para usar Barramento de Serviço do Azure.
<dependency>
<groupId>com.azure.spring</groupId>
<artifactId>spring-cloud-azure-starter-servicebus-jms</artifactId>
</dependency>
Configuração
A tabela a seguir descreve as propriedades configuráveis ao usar o suporte do Spring JMS:
| Propriedade | Descrição |
|---|---|
spring.jms.servicebus.connection-string |
A cadeia de conexão do Barramento de Serviço do Azure, caso você queira fornecê-la diretamente. |
spring.jms.servicebus.topic-client-id |
A ID do cliente JMS. Funciona apenas para o bean topicJmsListenerContainerFactory. |
spring.jms.servicebus.enabled |
Um valor que indica se a configuração automática do JMS Barramento de Serviço deve ser habilitada. O valor padrão é true. |
spring.jms.servicebus.idle-timeout |
A duração do tempo limite de inatividade da conexão que indica por quanto tempo o cliente espera que o Barramento de Serviço mantenha uma conexão ativa quando nenhuma mensagem é entregue. O valor padrão é 2m. |
spring.jms.servicebus.passwordless-enabled |
Se deseja habilitar a autenticação sem senha para o Barramento de Serviço do Azure JMS. O valor padrão é false. |
spring.jms.servicebus.pricing-tier |
A camada de preço do Barramento de Serviço do Azure. Os valores com suporte são premium e standard. A camada Premium usa Java JMS (Serviço de Mensagem) 2.0, enquanto a camada padrão usa o JMS 1.1 para interagir com Barramento de Serviço do Azure. |
spring.jms.servicebus.listener.reply-pub-sub-domain |
Um valor que indica se o tipo de destino da resposta é um tópico. Funciona apenas para o bean topicJmsListenerContainerFactory. |
spring.jms.servicebus.listener.phase |
A fase em que esse contêiner deve ser iniciado e interrompido. |
spring.jms.servicebus.listener.reply-qos-settings |
Configura o QosSettings a ser usado ao enviar uma resposta. |
spring.jms.servicebus.listener.subscription-durable |
Um valor que indica se a assinatura será durável. Só funciona para o topicJmsListenerContainerFactory bean. O valor padrão é true. |
spring.jms.servicebus.listener.subscription-shared |
Um valor que indica se a assinatura deve ser compartilhada. Funciona apenas para o bean topicJmsListenerContainerFactory. |
spring.jms.servicebus.pool.block-if-full |
Um valor que indica se deve bloquear quando uma conexão é solicitada e o pool estiver cheio. Defina-o como false para lançar um JMSException em vez disso. |
spring.jms.servicebus.pool.block-if-full-timeout |
O período de bloqueio antes de lançar uma exceção se o pool ainda estiver cheio. |
spring.jms.servicebus.pool.enabled |
Um valor que indica se um JmsPoolConnectionFactory deve ser criado, em vez de um ConnectionFactoryregular. |
spring.jms.servicebus.pool.idle-timeout |
O tempo limite de inatividade do pool de conexões. |
spring.jms.servicebus.pool.max-connections |
O número máximo de conexões no pool. |
spring.jms.servicebus.pool.max-sessions-per-connection |
O número máximo de sessões agrupadas por conexão no pool. |
spring.jms.servicebus.pool.time-between-expiration-check |
O tempo de suspensão entre as execuções do thread de remoção da conexão ociosa. Quando o valor é negativo, nenhuma thread de remoção de conexões ociosas é executada. |
spring.jms.servicebus.pool.use-anonymous-producers |
Um valor que indica se deve usar apenas uma instância de MessageProducer anônima. Defina-o como false para criar um MessageProducer sempre que for necessário. |
spring.jms.servicebus.prefetch-policy.all |
O valor de fallback da opção de pré-fetch neste namespace do Barramento de Serviço. O valor padrão é 0. |
spring.jms.servicebus.prefetch-policy.durable-topic-prefetch |
O número de pré-fetch para o tópico durável. O valor padrão é 0. |
spring.jms.servicebus.prefetch-policy.queue-browser-prefetch |
O número de pré-fetch do navegador da fila. O valor padrão é 0. |
spring.jms.servicebus.prefetch-policy.queue-prefetch |
O número de pré-fetch da fila. O valor padrão é 0. |
spring.jms.servicebus.prefetch-policy.topic-prefetch |
O número de pré-fetch do tópico. O valor padrão é 0. |
Nota
A configuração geral do Spring JMS é omitida para abreviar.
Para obter mais informações, consulte o documento do Spring JMS.
Uso básico
Conectar-se ao JMS Barramento de Serviço do Azure usando sem senha
Configure as seguintes propriedades em seu arquivo de application.yml:
spring:
jms:
servicebus:
namespace: ${AZURE_SERVICEBUS_NAMESPACE}
pricing-tier: ${PRICING_TIER}
passwordless-enabled: true
Importante
O Barramento de Serviço do Azure JMS dá suporte ao uso do Microsoft Entra ID para autorizar solicitações aos recursos do Barramento de Serviço. Com Microsoft Entra ID, verifique se você atribuiu a função Barramento de Serviço do Azure Data Owner à conta Microsoft Entra que você está usando no momento. Para obter mais informações, consulte Atribuir funções do Azure usando o portal do Azure.
Conectar-se ao Barramento de Serviço do Azure com JMS usando a Identidade Gerenciada
Para usar a identidade gerenciada, habilite a identidade gerenciada para seu serviço e atribua a função
Barramento de Serviço do Azure Data Owner. Para obter mais informações, consulte Autenticar uma identidade gerenciada com o Microsoft Entra ID para acessar recursos do Barramento de Serviço do Azure.Configure as seguintes propriedades em seu arquivo de application.yml:
spring: cloud: azure: credential: managed-identity-enabled: true jms: servicebus: namespace: ${AZURE_SERVICEBUS_NAMESPACE} pricing-tier: ${PRICING_TIER} passwordless-enabled: trueImportante
Se você estiver usando a identidade gerenciada atribuída pelo usuário, também precisará adicionar a propriedade
spring.cloud.azure.credential.client-idcom a ID do cliente de identidade gerenciada atribuída pelo usuário.
Conectar ao JMS do Barramento de Serviço do Azure usando cadeia de conexão
Adicione as seguintes propriedades e tudo estará pronto.
spring:
jms:
servicebus:
connection-string: ${AZURE_SERVICEBUS_CONNECTION_STRING}
pricing-tier: ${PRICING_TIER}
Nota
Microsoft recomenda usar o fluxo de autenticação mais seguro disponível. O fluxo de autenticação descrito nesse procedimento, como para bancos de dados, caches, mensagens ou serviços de IA, exige um grau muito alto de confiança no aplicativo e traz riscos não presentes em outros fluxos. Use esse fluxo somente quando opções mais seguras, como identidades gerenciadas para conexões sem senha ou sem chave, não forem viáveis. Para operações de máquinas locais, prefira identidades de usuário para conexões sem senha ou sem chave.
Conexões
O Spring Cloud Azure fornece as três opções do Connection Factory a seguir para se conectar ao JMS Barramento de Serviço do Azure:
JmsPoolConnectionFactory: esta fábrica mantém um pool de conexões com opções personalizáveis comospring.jms.servicebus.pool.max-connections. Mais configurações de pool - prefixadas comspring.jms.servicebus.pool.- são detalhadas na seção Configuração . Essa configuração aprimora o desempenho usando a funcionalidade de balanceamento de carga do Barramento de Serviço do Azure, distribuindo tráfego entre vários pontos de extremidade.CachingConnectionFactory: Esta fábrica reutiliza uma única conexão para todas as chamadas aJmsTemplate, reduzindo a sobrecarga da criação de conexões, o que é ideal para cenários de baixo tráfego. No entanto, esse modo não usa a funcionalidade de balanceamento de carga do Barramento de Serviço do Azure.ServiceBusJmsConnectionFactory: Neste modo, cada chamada paraJmsTemplatecria uma nova conexão, o que pode exigir muitos recursos e ser menos eficiente.
Quando todas as três classes existem no classpath, qual delas é usada? A tabela a seguir descreve o que é usado com base nas propriedades de configuração (desde o Spring Cloud Azure 7.1.0 e 6.2.0):
spring.jms.servicebus.pool.enabled |
spring.jms.cache.enabled |
Remetente ConnectionFactory |
Contêiner do ouvinte ConnectionFactory |
|---|---|---|---|
| não definido | não definido | CachingConnectionFactory |
ServiceBusJmsConnectionFactory |
| não definido | true |
CachingConnectionFactory |
CachingConnectionFactory |
| não definido | false |
ServiceBusJmsConnectionFactory |
ServiceBusJmsConnectionFactory |
true |
não definido | JmsPoolConnectionFactory |
JmsPoolConnectionFactory |
true |
true |
CachingConnectionFactory |
CachingConnectionFactory |
true |
false |
JmsPoolConnectionFactory |
JmsPoolConnectionFactory |
false |
não definido | CachingConnectionFactory |
ServiceBusJmsConnectionFactory |
false |
true |
CachingConnectionFactory |
CachingConnectionFactory |
false |
false |
ServiceBusJmsConnectionFactory |
ServiceBusJmsConnectionFactory |
Nota
A tabela a seguir mostra o padrão ConnectionFactory quando spring.jms.servicebus.pool.enabled e spring.jms.cache.enabled não estão definidos para versões diferentes do Spring Cloud Azure:
| Versão do Spring Cloud Azure | Remetente ConnectionFactory |
Contêiner do ouvinte ConnectionFactory |
|---|---|---|
| >= 6,2,0 ou >= 7,1,0 | CachingConnectionFactory |
ServiceBusJmsConnectionFactory |
| 6.1.0 e 7.0.0 | ServiceBusJmsConnectionFactory |
ServiceBusJmsConnectionFactory |
| <= 6,1,0 | JmsPoolConnectionFactory |
JmsPoolConnectionFactory |
Amostras
Para obter mais informações, consulte o repositório azure-spring-boot-samples no GitHub.