Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
Ez a cikk bemutatja, hogyan használható az 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 az 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. A Microsoft Entra-hitelesítés egy mechanizmus az Azure Service Bushoz való csatlakozáshoz a Microsoft Entra ID-ban meghatározott identitások használatával. A Microsoft Entra-hitelesítéssel a Service Bus és más Microsoft-szolgáltatások központi helyen kezelhetők, ami leegyszerűsíti az engedélykezelést.
Hogyan működik?
A Spring Cloud Azure az alkalmazáshitelesítés konfigurációjától függően először a következő típusú hitelesítő adatok egyikét hozza létre:
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ó: Spring Cloud Azure-hitelesítési.
Függőség beállítása
Adja hozzá a következő függőségeket, ha át szeretné migrálni a Spring JMS-alkalmazást az 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 | Az Azure Service Bus kapcsolati sztringje, amikor közvetlenül meg szeretné adni a kapcsolati sztringet. |
| 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 a Service Bus JMS automatikus konfigurálását. Az alapértelmezett érték a true. |
| spring.jms.servicebus.idle-timeout | A kapcsolat tétlen időtúllépési időtartama, amely azt jelzi, hogy az ügyfél mennyi ideig várja, hogy a Service Bus életben tartsa a kapcsolatot, amikor nem érkeznek üzenetek. Az alapértelmezett érték a 2m. |
| spring.jms.servicebus.passwordless-enabled | Az Azure Service Bus JMS jelszó nélküli engedélyezésének engedélyezése. Az alapértelmezett érték a false. |
| spring.jms.servicebus.pricing-tier | Az Azure Service Bus árszintje. 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 az Azure Service Bus használatá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-munkamenetek-kapcsolatonként | 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 Service Bus-névtér előzetes beállításának tartalék értéke. 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 az 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
Az Azure Service Bus JMS támogatja a Microsoft Entra ID használatát a Service Bus-erőforrásokra irányuló kérések engedélyezéséhez. A Microsoft Entra-azonosítóval győződjön meg arról, hogy a Azure Service Bus-adattulajdonosi szerepkört hozzárendelte a jelenleg használt Microsoft Entra-fiókhoz. További információ: Azure-szerepkörök hozzárendelése az Azure Portalhasználatával.
Csatlakozás az Azure Service Bushoz 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ó: Felügyelt identitás hitelesítése Microsoft Entra-azonosítóval az Azure Service Bus-erőforrásokelé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 az Azure Service Bus JMS-hez kapcsolati sztring használatával
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
A Microsoft az elérhető 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
Az Azure Spring Cloud a következő három Connection Factory-lehetőséget biztosítja az Azure Service Bus JMS-hez való csatlakozáshoz:
JmsPoolConnectionFactory: Beállításspring.jms.servicebus.pool.enabled=true. 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. Aspring.jms.servicebus.pool.előtaggal ellátott további készletkonfigurációs beállításokat a Konfiguráció szakaszban találja. Ez a beállítás az Azure Service Bus terheléselosztási funkciójának kihasználásával javítja a teljesítményt, és több végpont között osztja el a forgalmat.CachingConnectionFactory: Beállításspring.jms.cache.enabled=true. Ez a gyár egyetlen kapcsolatot használ aJmsTemplatefelé irányuló összes híváshoz, 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 ki az Azure Service Bus terheléselosztási képességét.ServiceBusJmsConnectionFactory: Állítsa bespring.jms.servicebus.pool.enabled=falseés hagyja meg a készlet ésspring.jms.cache.enabled=falsea gyorsítótár beállításait, és ne használja az alapértelmezett értéket készletezés vagy gyorsítótárazás nélkül. Ebben a módban aJmsTemplatehívásai új kapcsolatot hoznak létre, amely erőforrás-igényes és kevésbé hatékony lehet.
Jegyzet
A Spring Cloud Azure 6.1.0-tól kezdve az alapértelmezett ConnectionFactory értékre váltottunk ServiceBusJmsConnectionFactory.
Minták
További információ: azure-spring-boot-samples adattár a GitHubon.