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 o 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 a autenticação do Microsoft Entra para se conectar aos serviços do 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 se conectar ao Barramento de Serviço do Azure usando identidades definidas na ID do Microsoft Entra. Com a autenticação do Microsoft Entra, você pode gerenciar o Barramento de Serviço e outros serviços da Microsoft em um local central, o que simplifica o gerenciamento de permissões.
Como funciona
O Spring Cloud Azure cria primeiro 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 de autenticação do Spring Cloud Azure.
Configuração de dependência
Adicione as dependências a seguir se você quiser migrar seu aplicativo Spring JMS para usar o 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.cadeia de caracteres de conexão | A cadeia de conexão do Barramento de Serviço do Azure, para quando você quiser fornecer a cadeia de conexão diretamente. |
| spring.jms.servicebus.topic-client-id | A ID do cliente JMS. Só funciona para o feijão topicJmsListenerContainerFactory. |
| spring.jms.servicebus.enabled | Um valor que indica se a configuração automática do JMS do Barramento de Serviço deve ser habilitada. O valor padrão é true. |
| spring.jms.servicebus.idle-timeout | A duração do tempo limite de ociosidade da conexão que indica 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.servicebushabilitado para .passwordless | Se deseja habilitar sem senha para o JMS do Barramento de Serviço do Azure. O valor padrão é false. |
| spring.jms.servicebus.pricing-tier | O tipo de preço do Barramento de Serviço do Azure. Os valores com suporte 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.listener.reply-pub-sub-domínio | Um valor que indica se o tipo de destino de resposta é um tópico. Só funciona para o feijão 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 feijão topicJmsListenerContainerFactory. O valor padrão é true. |
| spring.jms.servicebus.listener.subscription-shared | Um valor que indica se a assinatura deve ser compartilhada. Só funciona para o feijão topicJmsListenerContainerFactory. |
| spring.jms.servicebus.pool.block-if-full | Um valor que indica se uma conexão é solicitada e o pool está 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 ociosidade do pool de conexões. |
| spring.jms.servicebus.pool.max-conexões | O número máximo de conexões em pool. |
| spring.jms.servicebus.pool.max-sessões-por-conexão | O número máximo de sessões em pool 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 de conexão ociosa. Quando negativo, nenhum thread de remoção de conexão ociosa é executado. |
| 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 para a opção prefetch 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é-busca para o tópico durável. O valor padrão é 0. |
| spring.jms.servicebus.prefetch-policy.queue-browser-prefetch | O número de pré-busca para o navegador da fila. O valor padrão é 0. |
| spring.jms.servicebus.prefetch-policy.queue-prefetch | O número de pré-busca para fila. O valor padrão é 0. |
| spring.jms.servicebus.prefetch-policy.topic-prefetch | O número de pré-busca para o tópico. O valor padrão é 0. |
Nota
A configuração geral do Spring JMS é omitida para abreviar.
Para obter mais informações, consulte de documento do Spring JMS.
Uso básico
Conectar-se ao JMS do 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 JMS do Barramento de Serviço do Azure dá suporte ao uso da ID do Microsoft Entra para autorizar solicitações aos recursos do Barramento de Serviço. Com a ID do Microsoft Entra, verifique se você atribuiu a função Proprietário de Dados do Barramento de Serviço do Azure à conta do 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 o JMS usar a Identidade Gerenciada
Para usar a identidade gerenciada, habilite a identidade gerenciada para seu serviço e atribua a função
Azure Service Bus Data Owner. Para obter mais informações, consulte Autenticar uma identidade gerenciada com a ID do Microsoft Entra 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-se ao JMS do Barramento de Serviço do Azure usando a cadeia de conexão
Adicione as propriedades a seguir e você está pronto para ir.
spring:
jms:
servicebus:
connection-string: ${AZURE_SERVICEBUS_CONNECTION_STRING}
pricing-tier: ${PRICING_TIER}
Nota
A 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 do Barramento de Serviço do Azure:
JmsPoolConnectionFactory: definaspring.jms.servicebus.pool.enabled=trueou deixe as configurações de pool e cache não definidas para usar o valor padrão. Essa fábrica mantém um pool de conexões com opções personalizáveis, comospring.jms.servicebus.pool.max-connections. As configurações de pool adicionais - prefixadas com- são detalhadas na seção de Configuração do . Essa configuração aprimora o desempenho aproveitando a funcionalidade de balanceamento de carga do Barramento de Serviço do Azure, distribuindo o tráfego entre vários pontos de extremidade. CachingConnectionFactory: definaspring.jms.cache.enabled=truee deixespring.jms.servicebus.pool.enablednão definido. Essa fábrica reutiliza uma única conexão para todas as chamadas paraJmsTemplate, reduzindo a sobrecarga da criação da conexão, que é ideal para cenários de baixo tráfego. No entanto, esse modo não aproveita a funcionalidade de balanceamento de carga do Barramento de Serviço do Azure.ServiceBusJmsConnectionFactory: definaspring.jms.servicebus.pool.enabled=falseespring.jms.cache.enabled=falsepara usarServiceBusJmsConnectionFactorydiretamente, sem nenhum pool ou cache. Nesse modo, cada chamada paraJmsTemplatecria uma nova conexão, que pode ser com uso intensivo de recursos e menos eficiente.
Para obter o desempenho ideal e a distribuição de carga, recomendamos usar JmsPoolConnectionFactory definindo spring.jms.servicebus.pool.enabled=true. Evite encapsular um JmsPoolConnectionFactory com um CachingConnectionFactory ou ServiceBusJmsConnectionFactory porque isso pode negar os benefícios do pool e pode resultar na retenção de conexões inativas depois que elas são removidas do pool.
Nota
A partir do Spring Cloud Azure 5.18.0, o ConnectionFactory padrão foi atualizado para JmsPoolConnectionFactory para usar melhor o balanceamento de carga do servidor do Barramento de Serviço. Se você preferir continuar usando o CachingConnectionFactory para armazenar em cache Session e MessageProducer, defina spring.jms.cache.enabled como true.
Amostras
Para obter mais informações, consulte o azure-spring-boot-samples repositório no GitHub.