Poznámka
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Tento článek popisuje, jak používat Azure Service Bus s rozhraním JMS API integrovaným do architektury Spring JMS.
Základní funkce
Připojení bez hesla
Připojení bez hesla používá ověřování Microsoft Entra pro připojení ke službám Azure bez uložení přihlašovacích údajů v aplikaci, konfiguračních souborech nebo v proměnných prostředí. Ověřování Microsoft Entra je mechanismus pro připojení ke službě Azure Service Bus pomocí identit definovaných v Microsoft Entra ID. Pomocí ověřování Microsoft Entra můžete spravovat Service Bus a další služby Microsoftu v centrálním umístění, což zjednodušuje správu oprávnění.
Jak to funguje
Spring Cloud Azure nejprve sestaví jeden z následujících typů přihlašovacích údajů v závislosti na konfiguraci ověřování aplikací:
ClientSecretCredential
ClientCertificateCredential
UsernamePasswordCredential
ManagedIdentityCredential
Pokud se nenajde žádný z těchto typů přihlašovacích údajů, použije se řetěz přihlašovacích údajů prostřednictvím DefaultTokenCredential
k získání přihlašovacích údajů z vlastností aplikace, proměnných prostředí, spravované identity nebo idEs. Další informace najdete v tématu ověřování Spring Cloud Azure.
Nastavení závislostí
Pokud chcete migrovat aplikaci Spring JMS pro použití služby Azure Service Bus, přidejte následující závislosti.
<dependency>
<groupId>com.azure.spring</groupId>
<artifactId>spring-cloud-azure-starter-servicebus-jms</artifactId>
</dependency>
Konfigurace
Následující tabulka popisuje konfigurovatelné vlastnosti při použití podpory Spring JMS:
Vlastnost | Popis |
---|---|
spring.jms.servicebus.connection-string | Připojovací řetězec služby Azure Service Bus, pro který chcete připojovací řetězec zadat přímo. |
spring.jms.servicebus.topic-client-id | ID klienta JMS. Funguje jenom pro topicJmsListenerContainerFactory bean. |
spring.jms.servicebus.enabled | Hodnota, která označuje, jestli se má povolit automatická konfigurace JMS služby Service Bus. Výchozí hodnota je true . |
spring.jms.servicebusvypršení časového limitu nečinnosti | Doba časového limitu nečinnosti připojení, která udává, jak dlouho klient očekává, že service Bus bude udržovat připojení aktivní, když se nedoručí žádné zprávy. Výchozí hodnota je 2m . |
spring.jms.servicebusbez hesla | Jestli chcete povolit bez hesla pro Azure Service Bus JMS. Výchozí hodnota je false . |
spring.jms.servicebus.cenová vrstva | Cenová úroveň služby Azure Service Bus. Podporované hodnoty jsou premium a standard . Úroveň Premium používá službu Java Message Service (JMS) 2.0, zatímco úroveň Standard používá JMS 1.1 k interakci se službou Azure Service Bus. |
spring.jms.servicebus.listener.reply-pub-sub-doména | Hodnota, která označuje, zda cílový typ odpovědi je téma. Funguje jenom pro topicJmsListenerContainerFactory bean. |
spring.jms.servicebus.listener.phase | Fáze, ve které má být tento kontejner spuštěný a zastavený. |
spring.jms.servicebus.listener.reply-qos-settings | Nakonfiguruje QosSettings , která se má použít při odesílání odpovědi. |
spring.jms.servicebus.listener.subscription-durable | Hodnota, která určuje, jestli má být předplatné odolné. Funguje jenom pro topicJmsListenerContainerFactory bean. Výchozí hodnota je true . |
spring.jms.servicebus.listener.subscription-shared | Hodnota, která určuje, jestli se má předplatné sdílet. Funguje jenom pro topicJmsListenerContainerFactory bean. |
spring.jms.servicebus.pool.block-if-full | Hodnota, která označuje, jestli se má blokovat, když se vyžaduje připojení, a fond je plný. Pokud chcete místo toho vyvolat JMSException , nastavte ji na false. |
spring.jms.servicebus.pool.block-if-full-timeout | Období blokování před vyvolání výjimky, pokud je fond stále plný. |
spring.jms.servicebus.pool.enabled | Hodnota, která označuje, zda má být vytvořen JmsPoolConnectionFactory namísto běžného ConnectionFactory . |
spring.jms.servicebus.pool.idle-timeout | Časový limit nečinnosti fondu připojení. |
spring.jms.servicebus.pool.max-připojení | Maximální počet připojení ve fondu. |
spring.jms.servicebus.pool.max-relace-na-připojení | Maximální počet relací ve fondu na připojení ve fondu. |
spring.jms.servicebus.pool.time-between-expiration-check | Doba spánku mezi běhy nečinného připojení vyřazovací vlákno. Pokud je záporné, vlákno vyřazení nečinných připojení se spustí. |
spring.jms.servicebus.pool.use-anonymous-producers | Hodnota, která označuje, zda použít pouze jednu anonymní MessageProducer instanci. Nastavte ho na false a vytvořte jednu MessageProducer pokaždé, když je potřeba. |
spring.jms.servicebus.prefetch-policy.all | Záložní hodnota pro možnost předběžného načtení v tomto oboru názvů služby Service Bus. Výchozí hodnota je 0 . |
spring.jms.servicebus.prefetch-policy.durable-topic-prefetch | Počet předběžného načtení pro trvalé téma. Výchozí hodnota je 0 . |
spring.jms.servicebus.prefetch-policy.queue-browser-prefetch | Počet předběžného načtení pro prohlížeč front. Výchozí hodnota je 0 . |
spring.jms.servicebus.prefetch-policy.queue-prefetch | Počet předběžného načtení fronty. Výchozí hodnota je 0 . |
spring.jms.servicebus.prefetch-policy.topic-prefetch | Počet předběžného načtení tématu. Výchozí hodnota je 0 . |
Poznámka
Obecná konfigurace Spring JMS není zkrácena.
Další informace naleznete v tématu
Základní využití
Připojení ke službě Azure Service Bus JMS pomocí bez hesla
V souboru application.yml nakonfigurujte následující vlastnosti:
spring:
jms:
servicebus:
namespace: ${AZURE_SERVICEBUS_NAMESPACE}
pricing-tier: ${PRICING_TIER}
passwordless-enabled: true
Důležitý
Azure Service Bus JMS podporuje použití MICROSOFT Entra ID k autorizaci požadavků na prostředky služby Service Bus. S ID Microsoft Entra se ujistěte, že jste přiřadili roli vlastníka dat služby Azure Service Bus účtu Microsoft Entra, který aktuálně používáte. Další informace najdete v tématu Přiřazení rolí Azure pomocí webu Azure Portal.
Připojení ke službě Azure Service Bus pomocí JMS s využitím spravované identity
Pokud chcete spravovanou identitu použít, povolte spravovanou identitu pro vaši službu a přiřaďte
Azure Service Bus Data Owner
roli. Další informace najdete v tématu Ověření spravované identity pomocí ID Microsoft Entra pro přístup k prostředkům služby Azure Service Bus.V souboru application.yml nakonfigurujte následující vlastnosti:
spring: cloud: azure: credential: managed-identity-enabled: true jms: servicebus: namespace: ${AZURE_SERVICEBUS_NAMESPACE} pricing-tier: ${PRICING_TIER} passwordless-enabled: true
Důležitý
Pokud používáte spravovanou identitu přiřazenou uživatelem, musíte také přidat vlastnost
spring.cloud.azure.credential.client-id
s ID klienta spravované identity přiřazené uživatelem.
Připojení ke službě Azure Service Bus JMS pomocí připojovacího řetězce
Přidejte následující vlastnosti a můžete začít.
spring:
jms:
servicebus:
connection-string: ${AZURE_SERVICEBUS_CONNECTION_STRING}
pricing-tier: ${PRICING_TIER}
Poznámka
Microsoft doporučuje používat nejbezpečnější dostupný tok ověřování. Tok ověřování popsaný v tomto postupu, například pro databáze, mezipaměti, zasílání zpráv nebo služby AI, vyžaduje velmi vysoký stupeň důvěryhodnosti v aplikaci a nese rizika, která nejsou přítomna v jiných tocích. Tento tok používejte pouze v případě, že nejsou možné zabezpečit možnosti, jako jsou spravované identity pro připojení bez hesla nebo bez klíčů. V případě místních operací počítačů upřednostňujete identity uživatelů pro připojení bez hesla nebo bez klíčů.
Konexe
Spring Cloud Azure poskytuje následující tři možnosti služby Connection Factory pro připojení ke službě Azure Service Bus JMS:
JmsPoolConnectionFactory
: Nastavtespring.jms.servicebus.pool.enabled=true
nebo ponechte nastavení fondu i mezipaměti nenastavené tak, aby používaly výchozí hodnotu. Tato továrna udržuje fond připojení s přizpůsobitelnými možnostmi, jako jespring.jms.servicebus.pool.max-connections
. Další nastavení konfigurace fondu s předponouspring.jms.servicebus.pool.
jsou podrobně popsána v části Konfigurace. Toto nastavení zvyšuje výkon díky využití funkce vyrovnávání zatížení služby Azure Service Bus a distribuci provozu napříč několika koncovými body.CachingConnectionFactory
: Nastavtespring.jms.cache.enabled=true
a ponechejtespring.jms.servicebus.pool.enabled
nenastavené. Tato továrna opakovaně používá jedno připojení pro všechna voláníJmsTemplate
, což snižuje režii při vytváření připojení, což je ideální pro scénáře s nízkým provozem. Tento režim ale nevyužívá funkci vyrovnávání zatížení služby Azure Service Bus.ServiceBusJmsConnectionFactory
: Nastavtespring.jms.servicebus.pool.enabled=false
aspring.jms.cache.enabled=false
tak, aby seServiceBusJmsConnectionFactory
používaly přímo bez sdružování nebo ukládání do mezipaměti. V tomto režimu každé voláníJmsTemplate
vytvoří nové připojení, které může být náročné na prostředky a méně efektivní.
Pro optimální výkon a distribuci zatížení doporučujeme použít JmsPoolConnectionFactory
nastavením spring.jms.servicebus.pool.enabled=true
. Vyhněte se zabalení JmsPoolConnectionFactory
s CachingConnectionFactory
nebo ServiceBusJmsConnectionFactory
, protože to může negovat výhody sdružování a může vést k tomu, že po vyřazení z fondu budou neaktivní připojení.
Poznámka
Počínaje verzí Spring Cloud Azure 5.18.0 se výchozí ConnectionFactory
aktualizovaly tak, aby JmsPoolConnectionFactory
lépe používaly vyrovnávání zatížení serveru Service Bus. Pokud chcete pokračovat v používání CachingConnectionFactory
pro ukládání do mezipaměti Session
i MessageProducer
, nastavte spring.jms.cache.enabled
na true
.
Vzorky
Další informace najdete v azure-spring-boot-samples úložišti na GitHubu.