Megosztás a következőn keresztül:


Az Azure Service Bus használata JMS-sel

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:

  • ClientSecretCredential
  • ClientCertificateCredential
  • UsernamePasswordCredential
  • ManagedIdentityCredential

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

  1. 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 Owner szerepkö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.

  2. 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: true
    

    Fontos

    Ha felhasználó által hozzárendelt felügyelt identitást használ, a spring.cloud.azure.credential.client-id tulajdonsá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: Ez a gyár egy olyan kapcsolatkészletet tart fenn, amely testreszabható lehetőségeket kínál, például spring.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 az 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áshoz JmsTemplate, 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 az Azure Service Bus terheléselosztási képességét.

  • ServiceBusJmsConnectionFactory: Ebben a módban minden hívás JmsTemplate ú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 használható (a Spring Cloud Azure 7.1.0 óta):

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 értéket mutatja be, ha mindkettőt spring.jms.servicebus.pool.enabled , és spring.jms.cache.enabled nincsenek beállítva különböző Spring Cloud Azure-verziókhoz:

Spring Cloud Azure-verzió Feladó ConnectionFactory Figyelőtároló ConnectionFactory
>= 7.1.0 CachingConnectionFactory ServiceBusJmsConnectionFactory
>=6.1.0 és <= 7.0.0 ServiceBusJmsConnectionFactory ServiceBusJmsConnectionFactory
<= 6.1.0 JmsPoolConnectionFactory JmsPoolConnectionFactory

Minták

További információ: azure-spring-boot-samples adattár a GitHubon.