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
Een verbinding zonder wachtwoord maakt gebruik van Microsoft Entra-authenticatie om verbinding te maken met Azure-services zonder aanmeldingsgegevens op te slaan in de toepassing, de configuratiebestanden ervan of 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 met de topicJmsListenerContainerFactory bean. |
spring.jms.servicebus.enabled |
Een waarde die aangeeft of Service Bus JMS-autoconfiguratie ingeschakeld wordt. 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 |
Configureert de QosSettings die moet 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 er moet worden geblokkeerd wanneer een verbinding wordt aangevraagd en de pool vol is. Stel het in op false om in plaats daarvan een JMSException te genereren. |
spring.jms.servicebus.pool.block-if-full-timeout |
De blokkeringsperiode voordat een uitzondering wordt opgeworpen als de pool nog steeds 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 |
De time-out bij inactiviteit van de verbindingspool. |
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 wachttijd tussen twee uitvoeringen van de thread voor het verwijderen van inactieve verbindingen. Wanneer deze waarde negatief is, draait er geen thread voor het opruimen van inactieve verbindingen. |
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
De algemene configuratie van Spring JMS wordt hier uit beknoptheid weggelaten.
Zie Spring JMS-documentvoor meer informatie.
Basisgebruik
Verbinding maken met Azure Service Bus JMS zonder 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 Azure-rollen toewijzen met behulp van de Azure-portal voor meer informatie.
Verbinding maken met Azure Service Bus via JMS met een beheerde identiteit
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 Een beheerde identiteit verifiëren met Microsoft Entra ID om toegang te krijgen tot 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 vanJmsTemplateeen nieuwe verbinding, wat veel resources kan vergen 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.1.0 en 6.2.0):
spring.jms.servicebus.pool.enabled |
spring.jms.cache.enabled |
Afzender ConnectionFactory |
Luistercontainer 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.1.0 | CachingConnectionFactory |
ServiceBusJmsConnectionFactory |
| 6.1.0 en 7.0.0 | ServiceBusJmsConnectionFactory |
ServiceBusJmsConnectionFactory |
| <= 6.1.0 | JmsPoolConnectionFactory |
JmsPoolConnectionFactory |
Voorbeelden
Zie de opslagplaats azure-spring-boot-samples op GitHub voor meer informatie.