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á Microsoft Entra ověřování 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í. Microsoft Entra ověřování je mechanismus pro připojení k 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 tématu Ověřování cloudových 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 |
Pokud chcete připojovací řetězec zadat přímo, Azure Service Bus připojovací řetězec. |
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 Service Bus. Výchozí hodnota je true. |
spring.jms.servicebus.idle-timeout |
Doba časového limitu nečinnosti připojení, která udává, jak dlouho klient očekává, Service Bus udržet připojení aktivní, když nebudou doručeny žádné zprávy. Výchozí hodnota je 2m. |
spring.jms.servicebus.passwordless-enabled |
Zda povolit 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á 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-connections |
Maximální počet připojení ve fondu. |
spring.jms.servicebus.pool.max-sessions-per-connection |
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ů 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í 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 žádostí o Service Bus prostředků. 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 Authenticate spravovanou identitu s Microsoft Entra ID pro přístup k prostředkům 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 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 nabízí následující tři možnosti připojení pro připojení k Azure Service Bus JMS:
JmsPoolConnectionFactory: 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 pomocí funkce vyrovnávání zatížení Azure Service Bus a distribuuje provoz napříč několika koncovými body.CachingConnectionFactory: Tato továrna znovu 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 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 existují všechny tři třídy v cestě k třídám, který z nich se používá? Následující tabulka popisuje, která se používá na základě vlastností konfigurace (od spring cloudu Azure 7.2.0 a 6.2.0):
spring.jms.servicebus.pool.enabled |
spring.jms.cache.enabled |
Odesílatele 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 Azure Spring Cloudu | Odesílatele ConnectionFactory |
Kontejner naslouchacího procesu ConnectionFactory |
|---|---|---|
| >= 6.2.0 nebo >= 7.2.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.