Megosztás:


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: Beállítás spring.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ául spring.jms.servicebus.pool.max-connections. A spring.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ás spring.jms.cache.enabled=true. Ez a gyár egyetlen kapcsolatot használ a JmsTemplatefelé 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 be spring.jms.servicebus.pool.enabled=false és hagyja meg a készlet és spring.jms.cache.enabled=false a 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 a JmsTemplate hí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.