Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
In dit artikel wordt beschreven hoe u Azure Service Bus gebruikt met de JMS-API die is geïntegreerd in het Spring JMS-framework.
Kernfuncties
Verbinding zonder wachtwoord
Verbinding zonder wachtwoord maakt gebruik van Microsoft Entra verificatie om verbinding te maken met Azure services zonder referenties op te slaan in de toepassing, de configuratiebestanden of in omgevingsvariabelen. Microsoft Entra verificatie is een mechanisme voor het maken van verbinding met Azure Service Bus met behulp van identiteiten die zijn gedefinieerd in Microsoft Entra ID. Met Microsoft Entra verificatie kunt u Service Bus en andere Microsoft-services op een centrale locatie beheren, waardoor het beheer van machtigingen wordt vereenvoudigd.
Hoe het werkt
Spring Cloud Azure bouwt eerst een van de volgende typen referenties, afhankelijk van de configuratie van de toepassingsverificatie:
ClientSecretCredentialClientCertificateCredentialUsernamePasswordCredentialManagedIdentityCredential
Als geen van deze typen referenties wordt gevonden, wordt de referentieketen via DefaultTokenCredential gebruikt om referenties te verkrijgen van toepassingseigenschappen, omgevingsvariabelen, beheerde identiteit of IDE's. Zie Spring Cloud Azure authentication voor meer informatie.
Afhankelijkheid instellen
Voeg de volgende afhankelijkheden toe als u uw Spring JMS-toepassing wilt migreren om Azure Service Bus te gebruiken.
<dependency>
<groupId>com.azure.spring</groupId>
<artifactId>spring-cloud-azure-starter-servicebus-jms</artifactId>
</dependency>
Configuratie
In de volgende tabel worden de configureerbare eigenschappen beschreven bij het gebruik van spring JMS-ondersteuning:
| Eigenschap | Beschrijving |
|---|---|
spring.jms.servicebus.connection-string |
De Azure Service Bus verbindingsreeks, voor wanneer u de verbindingsreeks rechtstreeks wilt opgeven. |
spring.jms.servicebus.topic-client-id |
De JMS-client-id. Werkt alleen voor de topicJmsListenerContainerFactory bean. |
spring.jms.servicebus.enabled |
Een waarde die aangeeft of Service Bus automatische configuratie van JMS moet worden ingeschakeld. De standaardwaarde is true. |
spring.jms.servicebus.idle-timeout |
De time-outduur voor inactiviteit van de verbinding die aangeeft hoe lang de client verwacht dat Service Bus een verbinding actief houdt wanneer er geen berichten worden bezorgd. De standaardwaarde is 2m. |
spring.jms.servicebus.passwordless-enabled |
Of u wachtwoordloos wilt inschakelen voor Azure Service Bus JMS. De standaardwaarde is false. |
spring.jms.servicebus.pricing-tier |
De Azure Service Bus prijscategorie. Ondersteunde waarden zijn premium en standard. Premium-laag maakt gebruik van Java Message Service (JMS) 2.0, terwijl de standard-laag JMS 1.1 gebruikt om te communiceren met Azure Service Bus. |
spring.jms.servicebus.listener.reply-pub-sub-domain |
Een waarde die aangeeft of het type antwoordbestemming een onderwerp is. Werkt alleen voor de topicJmsListenerContainerFactory bean. |
spring.jms.servicebus.listener.phase |
De fase waarin deze container moet worden gestart en gestopt. |
spring.jms.servicebus.listener.reply-qos-settings |
Hiermee configureert u de QosSettings die moeten worden gebruikt bij het verzenden van een antwoord. |
spring.jms.servicebus.listener.subscription-durable |
Een waarde die aangeeft of het abonnement duurzaam moet worden. Werkt alleen voor de topicJmsListenerContainerFactory bean. De standaardwaarde is true. |
spring.jms.servicebus.listener.subscription-shared |
Een waarde die aangeeft of het abonnement moet worden gedeeld. Werkt alleen voor de topicJmsListenerContainerFactory bean. |
spring.jms.servicebus.pool.block-if-full |
Een waarde die aangeeft of een verbinding moet worden geblokkeerd en de pool vol is. Stel deze in op onwaar om in plaats daarvan een JMSException te gooien. |
spring.jms.servicebus.pool.block-if-full-timeout |
De blokkeringsperiode voordat er een uitzondering wordt gegenereerd als de pool nog vol is. |
spring.jms.servicebus.pool.enabled |
Een waarde die aangeeft of een JmsPoolConnectionFactory moet worden gemaakt, in plaats van een gewone ConnectionFactory. |
spring.jms.servicebus.pool.idle-timeout |
Time-out voor inactiviteit van de verbindingsgroep. |
spring.jms.servicebus.pool.max-connections |
Het maximum aantal gegroepeerde verbindingen. |
spring.jms.servicebus.pool.max-sessions-per-connection |
Het maximum aantal gegroepeerde sessies per verbinding in de groep. |
spring.jms.servicebus.pool.time-between-expiration-check |
De tijd om te slapen tussen uitvoeringen van de niet-actieve verbindingsverwijderingsthread. Als dit negatief is, wordt er geen niet-actieve verbindingsverwijderingsthread uitgevoerd. |
spring.jms.servicebus.pool.use-anonymous-producers |
Een waarde die aangeeft of er slechts één anonieme MessageProducer exemplaar moet worden gebruikt. Stel deze in op false om één MessageProducer te maken telkens wanneer er een vereist is. |
spring.jms.servicebus.prefetch-policy.all |
De terugvalwaarde voor de prefetch-optie in deze Service Bus naamruimte. De standaardwaarde is 0. |
spring.jms.servicebus.prefetch-policy.durable-topic-prefetch |
Het aantal prefetch voor duurzaam onderwerp. De standaardwaarde is 0. |
spring.jms.servicebus.prefetch-policy.queue-browser-prefetch |
Het aantal prefetch voor de wachtrijbrowser. De standaardwaarde is 0. |
spring.jms.servicebus.prefetch-policy.queue-prefetch |
Het aantal prefetch voor de wachtrij. De standaardwaarde is 0. |
spring.jms.servicebus.prefetch-policy.topic-prefetch |
Het aantal prefetch voor het onderwerp. De standaardwaarde is 0. |
Notitie
Algemene spring JMS-configuratie wordt kortweg weggelaten.
Zie Spring JMS-documentvoor meer informatie.
Basisgebruik
Verbinding maken met Azure Service Bus JMS met een wachtwoord
Configureer de volgende eigenschappen in uw application.yml-bestand:
spring:
jms:
servicebus:
namespace: ${AZURE_SERVICEBUS_NAMESPACE}
pricing-tier: ${PRICING_TIER}
passwordless-enabled: true
Belangrijk
Azure Service Bus JMS ondersteunt het gebruik van Microsoft Entra ID om aanvragen voor Service Bus resources te autoriseren. Zorg ervoor dat u met Microsoft Entra ID de rol Azure Service Bus Gegevenseigenaar hebt toegewezen aan het Microsoft Entra account dat u momenteel gebruikt. Zie Assign Azure roles using the Azure portal voor meer informatie.
Verbinding maken met Azure Service Bus met JMS managed identity
Als u de beheerde identiteit wilt gebruiken, schakelt u de beheerde identiteit voor uw service in en wijst u de rol
Azure Service Bus Data Ownertoe. Zie Authenticate a managed identity with Microsoft Entra ID to access Azure Service Bus resources voor meer informatie.Configureer de volgende eigenschappen in uw application.yml-bestand:
spring: cloud: azure: credential: managed-identity-enabled: true jms: servicebus: namespace: ${AZURE_SERVICEBUS_NAMESPACE} pricing-tier: ${PRICING_TIER} passwordless-enabled: trueBelangrijk
Als u een door de gebruiker toegewezen beheerde identiteit gebruikt, moet u ook de eigenschap toevoegen
spring.cloud.azure.credential.client-idmet de door de gebruiker toegewezen client-id van de beheerde identiteit.
Verbinding maken met Azure Service Bus JMS met behulp van verbindingsreeks
Voeg de volgende eigenschappen toe en u kunt aan de slag.
spring:
jms:
servicebus:
connection-string: ${AZURE_SERVICEBUS_CONNECTION_STRING}
pricing-tier: ${PRICING_TIER}
Notitie
Microsoft raadt aan de veiligste verificatiestroom te gebruiken die beschikbaar is. De verificatiestroom die in deze procedure wordt beschreven, zoals voor databases, caches, berichten of AI-services, vereist een zeer hoge mate van vertrouwen in de toepassing en brengt risico's met zich mee die niet aanwezig zijn in andere stromen. Gebruik deze stroom alleen wanneer veiligere opties, zoals beheerde identiteiten voor wachtwoordloze of sleutelloze verbindingen, niet haalbaar zijn. Voor bewerkingen van lokale machines geeft u de voorkeur aan gebruikersidentiteiten voor verbindingen zonder wachtwoord of sleutelloze verbindingen.
Verbindingen
Spring Cloud Azure biedt de volgende drie verbindingsfactory-opties voor het maken van verbinding met Azure Service Bus JMS:
JmsPoolConnectionFactory: Deze fabriek onderhoudt een verbindingsgroep met aanpasbare opties zoalsspring.jms.servicebus.pool.max-connections. Meer configuratie-instellingen voor pools , voorafgegaan doorspring.jms.servicebus.pool.- worden beschreven in de sectie Configuratie . Deze installatie verbetert de prestaties door gebruik te maken van de taakverdelingsfunctie van Azure Service Bus, waardoor verkeer over meerdere eindpunten wordt verdeeld.CachingConnectionFactory: Deze fabriek gebruikt één verbinding voor alle aanroepen,JmsTemplatewaardoor de overhead van het maken van verbindingen wordt verminderd, wat ideaal is voor scenario's met weinig verkeer. In deze modus wordt echter geen gebruikgemaakt van de taakverdelingsmogelijkheid van Azure Service Bus.ServiceBusJmsConnectionFactory: In deze modus maakt elke aanroep om een nieuwe verbinding teJmsTemplatemaken, die resource-intensief en minder efficiënt kan zijn.
Wanneer alle drie de klassen bestaan in het klaspad, welke wordt gebruikt? In de volgende tabel wordt beschreven welke wordt gebruikt op basis van configuratie-eigenschappen (sinds Spring Cloud Azure 7.2.0 en 6.2.0):
spring.jms.servicebus.pool.enabled |
spring.jms.cache.enabled |
Afzender ConnectionFactory |
Listenercontainer ConnectionFactory |
|---|---|---|---|
| niet ingesteld | niet ingesteld | CachingConnectionFactory |
ServiceBusJmsConnectionFactory |
| niet ingesteld | true |
CachingConnectionFactory |
CachingConnectionFactory |
| niet ingesteld | false |
ServiceBusJmsConnectionFactory |
ServiceBusJmsConnectionFactory |
true |
niet ingesteld | JmsPoolConnectionFactory |
JmsPoolConnectionFactory |
true |
true |
CachingConnectionFactory |
CachingConnectionFactory |
true |
false |
JmsPoolConnectionFactory |
JmsPoolConnectionFactory |
false |
niet ingesteld | CachingConnectionFactory |
ServiceBusJmsConnectionFactory |
false |
true |
CachingConnectionFactory |
CachingConnectionFactory |
false |
false |
ServiceBusJmsConnectionFactory |
ServiceBusJmsConnectionFactory |
Notitie
In de volgende tabel ziet u de standaard-ConnectionFactory wanneer zowel spring.jms.servicebus.pool.enabled als spring.jms.cache.enabled niet zijn ingesteld voor verschillende Versies van Spring Cloud Azure:
| Spring Cloud Azure versie | Afzender ConnectionFactory |
Listenercontainer ConnectionFactory |
|---|---|---|
| >= 6.2.0 of >= 7.2.0 | CachingConnectionFactory |
ServiceBusJmsConnectionFactory |
| 6.1.0 en 7.0.0 | ServiceBusJmsConnectionFactory |
ServiceBusJmsConnectionFactory |
| <= 6.1.0 | JmsPoolConnectionFactory |
JmsPoolConnectionFactory |
Monsters
Zie de opslagplaats azure-spring-boot-samples op GitHub voor meer informatie.