Usare bus di servizio di Azure con JMS

Questo articolo si applica a: ✔️ Versione 4.14.0 ✔️ versione 5.8.0

Questo articolo descrive come usare bus di servizio di Azure con l'API JMS integrata nel framework Spring JMS.

È necessario fornire un bus di servizio di Azure stringa di connessione, che viene analizzato nel nome utente di accesso, nella password e nell'URI remoto per il broker AMQP.

Configurazione delle dipendenze

Aggiungere le dipendenze seguenti se si vuole eseguire la migrazione dell'applicazione Spring JMS per usare bus di servizio di Azure.

<dependency>
    <groupId>com.azure.spring</groupId>
    <artifactId>spring-cloud-azure-starter-servicebus-jms</artifactId>
</dependency>

Impostazione

Nella tabella seguente vengono descritte le proprietà configurabili quando si usa il supporto spring JMS:

Proprietà Descrizione
spring.jms.servicebus.connection-string Il bus di servizio di Azure stringa di connessione, per quando si desidera specificare direttamente il stringa di connessione.
spring.jms.servicebus.topic-client-id ID client JMS. Funziona solo per il topicJmsListenerContainerFactory bean.
spring.jms.servicebus.enabled Valore che indica se abilitare la configurazione automatica JMS del bus Servive. Il valore predefinito è true.
spring.jms.servicebus.idle-timeout Durata del timeout di inattività della connessione che indica per quanto tempo il client prevede bus di servizio mantenere attiva una connessione quando non vengono recapitati messaggi. Il valore predefinito è 2m.
spring.jms.servicebus.pricing-tier Livello di prezzo bus di servizio di Azure. I valori supportati sono Premium e Standard. Il livello Premium usa Java Message Service (JMS) 2.0, mentre il livello standard usa JMS 1.1 per interagire con bus di servizio di Azure.
spring.jms.servicebus.listener.reply-pub-sub-domain Valore che indica se il tipo di destinazione di risposta è un argomento. Funziona solo per il topicJmsListenerContainerFactory bean.
spring.jms.servicebus.listener.phase Fase in cui deve essere avviato e arrestato questo contenitore.
spring.jms.servicebus.listener.reply-qos-settings Configura l'oggetto da utilizzare per l'invio QosSettings di una risposta.
spring.jms.servicebus.listener.subscription-durable Valore che indica se rendere durevole la sottoscrizione. Funziona solo per il topicJmsListenerContainerFactory bean. Il valore predefinito è true.
spring.jms.servicebus.listener.subscription-shared Valore che indica se rendere condivisa la sottoscrizione. Funziona solo per il topicJmsListenerContainerFactory bean.
spring.jms.servicebus.pool.block-if-full Valore che indica se bloccare quando viene richiesta una connessione e il pool è pieno. Impostarlo su false per generare un'eccezione JMSException .
spring.jms.servicebus.pool.block-if-full-timeout Periodo di blocco prima di generare un'eccezione se il pool è ancora pieno.
spring.jms.servicebus.pool.enabled Valore che indica se deve essere creato un oggetto JmsPoolConnectionFactory anziché un normale ConnectionFactoryoggetto .
spring.jms.servicebus.pool.idle-timeout Timeout di inattività del pool di connessioni.
spring.jms.servicebus.pool.max-connections Numero massimo di connessioni in pool.
spring.jms.servicebus.pool.max-sessions-per-connection Numero massimo di sessioni in pool per ogni connessione nel pool.
spring.jms.servicebus.pool.time-between-expiration-check Tempo di sospensione tra le esecuzioni del thread di rimozione della connessione inattiva. In caso negativo, non viene eseguito alcun thread di rimozione della connessione inattiva.
spring.jms.servicebus.pool.use-anonymous-producers Valore che indica se utilizzare una sola istanza anonima MessageProducer . Impostarlo su false per crearne uno MessageProducer ogni volta che è necessario.
spring.jms.servicebus.prefetch-policy.all Valore di fallback per l'opzione di prelettura in questo spazio dei nomi bus di servizio. Il valore predefinito è 0.
spring.jms.servicebus.prefetch-policy.durable-topic-prefetch Numero di prelettura per l'argomento durevole. Il valore predefinito è 0.
spring.jms.servicebus.prefetch-policy.queue-browser-prefetch Numero di prelettura per il browser di accodamento. Il valore predefinito è 0.
spring.jms.servicebus.prefetch-policy.queue-prefetch Numero di prelettura per la coda. Il valore predefinito è 0.
spring.jms.servicebus.prefetch-policy.topic-prefetch Numero di prelettura per l'argomento. Il valore predefinito è 0.

Nota

La configurazione generale di Spring JMS viene omessa per brevità.

Per altre informazioni, vedere Il documento Spring JMS.

Utilizzo di base

Usare bus di servizio stringa di connessione

Il modo più semplice per connettersi a bus di servizio per l'applicazione Spring JMS è il stringa di connessione.

Aggiungere le proprietà seguenti ed è consigliabile procedere.

spring:
  jms:
    servicebus:
      connection-string: ${AZURE_SERVICEBUS_CONNECTION_STRING}
      pricing-tier: ${PRICING_TIER}

Nota

L'impostazione predefinita abilitata ConnectionFactory è , che aggiunge Session la memorizzazione nella cache e MessageProducer la memorizzazione nella cache.CachingConnectionFactory Se si desidera attivare la funzionalità di pool di connessioni di JmsPoolConnectionFactory, impostare su truespring.jms.servicebus.pool.enabled . Nella sezione Configurazione è possibile trovare altre opzioni di configurazione del pool (proprietà con prefisso spring.jms.servicebus.pool.).

Esempi

Per altre informazioni, vedere il repository azure-spring-boot-samples in GitHub.