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 API JMS integrovaným do architektury Spring JMS.
Základní funkce
Připojení bez hesla
Připojení bez hesla používá k připojení ke službám Azure ověřování Microsoft Entra, aniž by bylo nutné ukládat přihlašovací údaje do aplikace, jejích konfiguračních souborů nebo do proměnných prostředí. Ověřování Microsoft Entra je mechanismus umožňující připojení ke službě Azure Service Bus pomocí identit definovaných v Microsoft Entra ID. S ověřováním Microsoft Entra můžete spravovat Service Bus a další služby Microsoft 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í:
ClientSecretCredentialClientCertificateCredentialUsernamePasswordCredentialManagedIdentityCredential
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 článku Ověřování ve Spring Cloud Azure.
Nastavení závislostí
Pokud chcete migrovat aplikaci Spring JMS pro použití 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 ke službě Azure Service Bus, pokud chcete zadat připojovací řetězec přímo. |
spring.jms.servicebus.topic-client-id |
ID klienta JMS. Funguje jen pro komponentu topicJmsListenerContainerFactory. |
spring.jms.servicebus.enabled |
Hodnota, která označuje, jestli se má povolit automatická konfigurace JMS Service Bus. Výchozí hodnota je true. |
spring.jms.servicebus.idle-timeout |
Doba časového limitu nečinnosti spojení, která udává, jak dlouho má Service Bus udržovat spojení aktivní, pokud nejsou doručovány žádné zprávy. Výchozí hodnota je 2m. |
spring.jms.servicebus.passwordless-enabled |
Zda povolit přihlašování bez hesla pro Azure Service Bus JMS. Výchozí hodnota je false. |
spring.jms.servicebus.pricing-tier |
Cenová úroveň 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 s Azure Service Bus. |
spring.jms.servicebus.listener.reply-pub-sub-domain |
Hodnota, která udává, zda je typ cíle odpovědi tématem. 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 |
Nastaví 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 pouze pro objekt bean topicJmsListenerContainerFactory. |
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-connections |
Maximální počet připojení ve fondu. |
spring.jms.servicebus.pool.max-sessions-per-connection |
Maximální počet sdružených relací na jedno připojení ve fondu. |
spring.jms.servicebus.pool.time-between-expiration-check |
Doba čekání mezi spuštěními vlákna pro vyřazování nečinných připojení. Pokud je záporné, vlákno pro odstraňování nečinných připojení se nespustí. |
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ů 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ých načtení pro frontu. Výchozí hodnota je 0. |
spring.jms.servicebus.prefetch-policy.topic-prefetch |
Počet přednačtení pro téma. Výchozí hodnota je 0. |
Poznámka
Obecná konfigurace Spring JMS je pro stručnost vynechána.
Další informace najdete v dokumentu Spring JMS Document.
Základní využití
Připojení k 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. U Microsoft Entra ID se ujistěte, že jste přiřadili roli vlastníka dat Azure Service Bus k účtu Microsoft Entra, který právě používáte. Další informace najdete v tématu Assignování rolí Azure pomocí portálu Azure.
Připojení k Azure Service Bus pomocí JMS s využitím spravované identity
Pokud chcete použít spravovanou identitu, povolte spravovanou identitu pro vaši službu a přiřaďte
Azure Service Bus Data Ownerroli. Další informace najdete v tématu Ověření spravované identity pomocí Microsoft Entra ID 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: trueDůležitý
Pokud používáte spravovanou identitu přiřazenou uživatelem, musíte také přidat vlastnost
spring.cloud.azure.credential.client-ids ID klienta spravované identity přiřazené uživatelem.
Připojení k Azure Service Bus JMS pomocí připojovací řetězec
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 postup používejte pouze tehdy, pokud bezpečnější možnosti, jako jsou spravované identity pro připojení bez hesla nebo klíče, nejsou vhodné. V případě místních operací počítačů upřednostňujete identity uživatelů pro připojení bez hesla nebo bez klíčů.
Připojení
Spring Cloud Azure nabízí následující tři možnosti připojení pro připojení k Azure Service Bus JMS:
JmsPoolConnectionFactory: Tato továrna spravuje fond připojení s možnostmi přizpůsobení, napříkladspring.jms.servicebus.pool.max-connections. Další nastavení fondu s předponouspring.jms.servicebus.pool.jsou podrobně popsána v části Konfigurace. Toto nastavení zvyšuje výkon pomocí funkce vyrovnávání zatížení Azure Service Bus a distribuuje provoz napříč několika koncovými body.CachingConnectionFactory: Tato továrna využívá jediné připojení pro všechna volání naJmsTemplate, čímž snižuje režii spojenou s vytvářením připojení, takže je ideální pro scénáře s nízkou intenzitou provozu. Tento režim ale nepoužívá funkci vyrovnávání zatížení Azure Service Bus.ServiceBusJmsConnectionFactory: V tomto režimu každé voláníJmsTemplatevytvoří nové připojení, které může být náročné na prostředky a méně efektivní.
Pokud v classpath existují všechny tři třídy, která z nich se použije? Následující tabulka popisuje, která se používá na základě vlastností konfigurace (od verze Spring Cloud Azure 7.1.0 a 6.2.0):
spring.jms.servicebus.pool.enabled |
spring.jms.cache.enabled |
Odesílatel ConnectionFactory |
Kontejner naslouchacího procesu ConnectionFactory |
|---|---|---|---|
| nenastaveno | nenastaveno | CachingConnectionFactory |
ServiceBusJmsConnectionFactory |
| nenastaveno | true |
CachingConnectionFactory |
CachingConnectionFactory |
| nenastaveno | false |
ServiceBusJmsConnectionFactory |
ServiceBusJmsConnectionFactory |
true |
nenastaveno | JmsPoolConnectionFactory |
JmsPoolConnectionFactory |
true |
true |
CachingConnectionFactory |
CachingConnectionFactory |
true |
false |
JmsPoolConnectionFactory |
JmsPoolConnectionFactory |
false |
nenastaveno | CachingConnectionFactory |
ServiceBusJmsConnectionFactory |
false |
true |
CachingConnectionFactory |
CachingConnectionFactory |
false |
false |
ServiceBusJmsConnectionFactory |
ServiceBusJmsConnectionFactory |
Poznámka
Následující tabulka ukazuje výchozí ConnectionFactory, pokud spring.jms.servicebus.pool.enabled i spring.jms.cache.enabled nejsou nastaveny pro různé verze Azure Spring Cloud:
| Verze Spring Cloud Azure | Odesílatel ConnectionFactory |
Kontejner naslouchacího procesu ConnectionFactory |
|---|---|---|
| >= 6.2.0 nebo >= 7.1.0 | CachingConnectionFactory |
ServiceBusJmsConnectionFactory |
| 6.1.0 a 7.0.0 | ServiceBusJmsConnectionFactory |
ServiceBusJmsConnectionFactory |
| <= 6,1,0 | JmsPoolConnectionFactory |
JmsPoolConnectionFactory |
Vzorky
Další informace najdete v úložišti azure-spring-boot-samples na GitHub.