Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Ez a cikk bemutatja, hogyan használható Azure Service Bus a Spring JMS-keretrendszerbe integrált JMS API-val.
Alapvető funkciók
Jelszó nélküli kapcsolat
A jelszó nélküli kapcsolat Microsoft Entra hitelesítést használ a Azure szolgáltatásokhoz való csatlakozáshoz anélkül, hogy hitelesítő adatokat tárolnál az alkalmazásban, annak konfigurációs fájljaiban vagy környezeti változókban. Microsoft Entra hitelesítés a Azure Service Bus a Microsoft Entra ID definiált identitások használatával történő csatlakozás mechanizmusa. A Microsoft Entra hitelesítéssel központi helyen kezelheti Service Bus és más Microsoft-szolgáltatások, ami leegyszerűsíti az engedélykezelést.
Hogyan működik?
A Spring Cloud Azure először a következő típusú hitelesítő adatok egyikét hozza létre az alkalmazáshitelesítés konfigurációjától függően:
ClientSecretCredentialClientCertificateCredentialUsernamePasswordCredentialManagedIdentityCredential
Ha az ilyen típusú hitelesítő adatok egyike sem található, a hitelesítő adatok DefaultTokenCredential keresztüli lánca az alkalmazástulajdonságokból, környezeti változókból, felügyelt identitásokból vagy azonosítókból származó hitelesítő adatok lekérésére szolgál. További információ: Felhő-Azure hitelesítés.
Függőség beállítása
Adja hozzá a következő függőségeket, ha át szeretné telepíteni a Spring JMS-alkalmazást a Azure Service Bus használatára.
<dependency>
<groupId>com.azure.spring</groupId>
<artifactId>spring-cloud-azure-starter-servicebus-jms</artifactId>
</dependency>
Konfiguráció
Az alábbi táblázat a Spring JMS-támogatás használatakor konfigurálható tulajdonságokat ismerteti:
| Ingatlan | Leírás |
|---|---|
spring.jms.servicebus.connection-string |
A Azure Service Bus kapcsolati karakterlánc, amikor közvetlenül meg szeretné adni a kapcsolati karakterlánc. |
spring.jms.servicebus.topic-client-id |
A JMS-ügyfél azonosítója. Csak a topicJmsListenerContainerFactory babhoz működik. |
spring.jms.servicebus.enabled |
Egy érték, amely jelzi, hogy engedélyezni szeretné-e Service Bus JMS automatikus konfigurálását. Az alapértelmezett érték a true. |
spring.jms.servicebus.idle-timeout |
A kapcsolat tétlenségének időtúllépési időtartama, amely azt jelzi, hogy az ügyfél mennyi ideig várja, Service Bus életben tartsa a kapcsolatot, amikor nem érkeznek üzenetek. Az alapértelmezett érték a 2m. |
spring.jms.servicebus.passwordless-enabled |
A jelszó nélküli Azure Service Bus JMS engedélyezése. Az alapértelmezett érték a false. |
spring.jms.servicebus.pricing-tier |
A Azure Service Bus árszint. A támogatott értékek premium és standard. A prémium szint a Java Message Service (JMS) 2.0-s verziójával, míg a standard szint a JMS 1.1-et használja a Azure Service Bus való kommunikációhoz. |
spring.jms.servicebus.listener.reply-pub-sub-domain |
Egy érték, amely jelzi, hogy a válasz céltípusa témakör-e. Csak a topicJmsListenerContainerFactory babhoz működik. |
spring.jms.servicebus.listener.phase |
A tároló indításának és leállításának fázisa. |
spring.jms.servicebus.listener.reply-qos-settings |
A válasz küldésekor használandó QosSettings konfigurálja. |
spring.jms.servicebus.listener.subscription-durable |
Egy érték, amely jelzi, hogy az előfizetés tartós legyen-e. Csak a topicJmsListenerContainerFactory babhoz működik. Az alapértelmezett érték a true. |
spring.jms.servicebus.listener.subscription-shared |
Egy érték, amely azt jelzi, hogy meg szeretné-e osztani az előfizetést. Csak a topicJmsListenerContainerFactory babhoz működik. |
spring.jms.servicebus.pool.block-if-full |
Egy érték, amely jelzi, hogy blokkolni kell-e a kapcsolat kérését, és a készlet megtelt. Állítsa be hamisra, hogy inkább JMSException dobjon. |
spring.jms.servicebus.pool.block-if-full-timeout |
A kivételt megelőző blokkolási időszak, ha a készlet még mindig megtelt. |
spring.jms.servicebus.pool.enabled |
Egy érték, amely azt jelzi, hogy létre kell-e hozni egy JmsPoolConnectionFactory a normál ConnectionFactoryhelyett. |
spring.jms.servicebus.pool.idle-timeout |
A kapcsolatkészlet tétlen időtúllépése. |
spring.jms.servicebus.pool.max-connections |
A készletezett kapcsolatok maximális száma. |
spring.jms.servicebus.pool.max-sessions-per-connection |
A készletben lévő kapcsolatonkénti készletezett munkamenetek maximális száma. |
spring.jms.servicebus.pool.time-between-expiration-check |
Az inaktív kapcsolat kiürítési szálának futtatásai közötti alvás ideje. Negatív esetben nem fut tétlen kapcsolat kilakoltatási szála. |
spring.jms.servicebus.pool.use-anonymous-producers |
Egy érték, amely azt jelzi, hogy csak egy névtelen MessageProducer példányt használjon-e. Állítsa be úgy, hogy false hozzon létre egy MessageProducer minden alkalommal, amikor szükség van rá. |
spring.jms.servicebus.prefetch-policy.all |
A tartalék érték ebben a Service Bus névtérben az előbetöltési beállításhoz. Az alapértelmezett érték a 0. |
spring.jms.servicebus.prefetch-policy.durable-topic-prefetch |
A tartós témakör előzetes verziójának száma. Az alapértelmezett érték a 0. |
spring.jms.servicebus.prefetch-policy.queue-browser-prefetch |
A várólista-böngésző előzetes verziójának száma. Az alapértelmezett érték a 0. |
spring.jms.servicebus.prefetch-policy.queue-prefetch |
Az üzenetsor előkezelésének száma. Az alapértelmezett érték a 0. |
spring.jms.servicebus.prefetch-policy.topic-prefetch |
A témakör előzetes verziójának száma. Az alapértelmezett érték a 0. |
Jegyzet
A Spring JMS általános konfigurációja rövid ideig nem jelenik meg.
További információ: Spring JMS-dokumentum.
Alapszintű használat
Csatlakozás Azure Service Bus JMS-hez jelszó nélküli használatával
Konfigurálja a következő tulajdonságokat a application.yml fájlban:
spring:
jms:
servicebus:
namespace: ${AZURE_SERVICEBUS_NAMESPACE}
pricing-tier: ${PRICING_TIER}
passwordless-enabled: true
Fontos
Azure Service Bus JMS támogatja a Microsoft Entra ID használatát Service Bus erőforrásokra irányuló kérelmek engedélyezéséhez. A Microsoft Entra ID győződjön meg arról, hogy a Azure Service Bus Adattulajdonos szerepkört az éppen használt Microsoft Entra-fiókhoz rendelte. További információ: Assign Azure szerepkörök a Azure portálon.
Csatlakozás Azure Service Bus JMS-sel felügyelt identitás használatával
A felügyelt identitás használatához engedélyezze a szolgáltatás felügyelt identitását, és rendelje hozzá a
Azure Service Bus Data Ownerszerepkört. További információ: A felügyelt identitás hitelesítése Microsoft Entra ID Azure Service Bus erőforrások eléréséhez.Konfigurálja a következő tulajdonságokat a application.yml fájlban:
spring: cloud: azure: credential: managed-identity-enabled: true jms: servicebus: namespace: ${AZURE_SERVICEBUS_NAMESPACE} pricing-tier: ${PRICING_TIER} passwordless-enabled: trueFontos
Ha felhasználó által hozzárendelt felügyelt identitást használ, a
spring.cloud.azure.credential.client-idtulajdonságot is hozzá kell adnia a felhasználó által hozzárendelt felügyelt identitás ügyfélazonosítójához.
Csatlakozás Azure Service Bus JMS-hez kapcsolati karakterlánc
Adja hozzá a következő tulajdonságokat, és jó választás.
spring:
jms:
servicebus:
connection-string: ${AZURE_SERVICEBUS_CONNECTION_STRING}
pricing-tier: ${PRICING_TIER}
Jegyzet
Microsoft a legbiztonságosabb hitelesítési folyamat használatát javasolja. Az ebben az eljárásban ismertetett hitelesítési folyamat, például adatbázisok, gyorsítótárak, üzenetkezelés vagy AI-szolgáltatások esetében, nagyon nagy megbízhatóságot igényel az alkalmazásban, és más folyamatokban nem jelenik meg kockázattal. Ezt a folyamatot csak akkor használja, ha a biztonságosabb lehetőségek, például a jelszó nélküli vagy kulcs nélküli kapcsolatok felügyelt identitásai nem életképesek. A helyi gépi műveletekhez előnyben részesítse a jelszó nélküli vagy kulcs nélküli kapcsolatok felhasználói identitásait.
Kapcsolatok
A Spring Cloud Azure a következő három Connection Factory-lehetőséget biztosítja a Azure Service Bus JMS-hez való csatlakozáshoz:
JmsPoolConnectionFactory: Ez a gyár egy olyan kapcsolatkészletet tart fenn, amely testreszabható lehetőségeket kínál, példáulspring.jms.servicebus.pool.max-connections. További készletkonfigurációs beállítások – előtaggal –spring.jms.servicebus.pool.a Konfiguráció szakaszban találhatók. Ez a beállítás Azure Service Bus terheléselosztási funkciójával javítja a teljesítményt, és több végpont között osztja el a forgalmat.CachingConnectionFactory: Ez a gyár egyetlen kapcsolatot használ újra az összes híváshozJmsTemplate, csökkentve a kapcsolatlétrehozás többletterhelését, ami ideális az alacsony forgalmú forgatókönyvekhez. Ez a mód azonban nem használja Azure Service Bus terheléselosztási képességét.ServiceBusJmsConnectionFactory: Ebben a módban minden hívásJmsTemplateúj kapcsolatot hoz létre, amely erőforrás-igényes és kevésbé hatékony lehet.
Ha mind a három osztály létezik az osztályúton, melyiket használja? Az alábbi táblázat a konfigurációs tulajdonságok alapján (a Spring Cloud Azure 7.2.0 és 6.2.0) alapján használható:
spring.jms.servicebus.pool.enabled |
spring.jms.cache.enabled |
Feladó ConnectionFactory |
Figyelőtároló ConnectionFactory |
|---|---|---|---|
| nincs beállítva | nincs beállítva | CachingConnectionFactory |
ServiceBusJmsConnectionFactory |
| nincs beállítva | true |
CachingConnectionFactory |
CachingConnectionFactory |
| nincs beállítva | false |
ServiceBusJmsConnectionFactory |
ServiceBusJmsConnectionFactory |
true |
nincs beállítva | JmsPoolConnectionFactory |
JmsPoolConnectionFactory |
true |
true |
CachingConnectionFactory |
CachingConnectionFactory |
true |
false |
JmsPoolConnectionFactory |
JmsPoolConnectionFactory |
false |
nincs beállítva | CachingConnectionFactory |
ServiceBusJmsConnectionFactory |
false |
true |
CachingConnectionFactory |
CachingConnectionFactory |
false |
false |
ServiceBusJmsConnectionFactory |
ServiceBusJmsConnectionFactory |
Jegyzet
Az alábbi táblázat az alapértelmezett ConnectionFactory mutatja, ha spring.jms.servicebus.pool.enabled és spring.jms.cache.enabled nincs beállítva a különböző Spring Cloud-Azure verziókhoz:
| Spring Cloud Azure verziója | Feladó ConnectionFactory |
Figyelőtároló ConnectionFactory |
|---|---|---|
| >= 6.2.0 vagy >= 7.2.0 | CachingConnectionFactory |
ServiceBusJmsConnectionFactory |
| 6.1.0 és 7.0.0 | ServiceBusJmsConnectionFactory |
ServiceBusJmsConnectionFactory |
| <= 6.1.0 | JmsPoolConnectionFactory |
JmsPoolConnectionFactory |
Minták
További információt a GitHub azure-spring-boot-samples adattárában talál.