Condividi tramite


Entità del servizio messaggi Java (JMS) 2.0

Le applicazioni client che si connettono a Azure Service Bus Premium e usano la libreria JMS del bus di servizio di Azure possono usare le entità seguenti.

Queues

Le code in JMS sono semanticamente confrontabili con le code tradizionali del bus di servizio.

Per creare una coda, usare i metodi riportati di seguito nella classe JMSContext.

Queue createQueue(String queueName)

Argomenti

Gli argomenti in JMS sono semanticamente confrontabili con gli argomenti tradizionali del bus di servizio.

Per creare un argomento, usare i metodi seguenti nella JMSContext classe :

Topic createTopic(String topicName)

Code temporanee

Se un'applicazione client richiede un'entità temporanea esistente per la durata dell'applicazione, può usare code temporanee. Queste entità vengono usate nel modello Request-Reply .

Per creare una coda temporanea, usare i metodi seguenti nella JMSContext classe :

TemporaryQueue createTemporaryQueue()

Argomenti temporanei

Analogamente alle code temporanee, gli argomenti temporanei esistono per abilitare la pubblicazione/sottoscrizione attraverso un'entità temporanea che esiste per la durata dell'applicazione.

Per creare un argomento temporaneo, usare i metodi seguenti nella JMSContext classe :

TemporaryTopic createTemporaryTopic()

Sottoscrizioni del servizio messaggi Java (JMS)

Anche se queste sottoscrizioni sono semanticamente simili alle sottoscrizioni sui topic di Service Bus, ovvero esistono in un argomento e consentono la semantica di pubblicazione/sottoscrizione, la specifica di Servizio messaggi Java introduce i concetti di attributi condivisi, non condivisi, **durevoli e non durevoli per una determinata sottoscrizione.

Annotazioni

Le sottoscrizioni seguenti sono disponibili nel livello Premium del bus di servizio di Azure per le applicazioni client che si connettono al bus di servizio di Azure usando la libreria JMS del bus di servizio di Azure.

È possibile creare solo sottoscrizioni durevoli usando il portale di Azure.

Sottoscrizioni durevoli condivise

Una sottoscrizione permanente condivisa viene usata quando tutti i messaggi pubblicati in un argomento devono essere ricevuti ed elaborati da un'applicazione, indipendentemente dal fatto che l'applicazione stia sempre utilizzando dalla sottoscrizione.

Qualsiasi applicazione autenticata per ricevere dal bus di servizio può ricevere dalla sottoscrizione permanente condivisa.

Per creare una sottoscrizione durevole condivisa, usare i metodi seguenti nella JMSContext classe :

JMSConsumer createSharedDurableConsumer(Topic topic, String name)

JMSConsumer createSharedDurableConsumer(Topic topic, String name, String messageSelector)

La sottoscrizione durevole condivisa continua a esistere a meno che non venga eliminata usando il unsubscribe metodo nella JMSContext classe .

void unsubscribe(String name)

Sottoscrizioni permanenti non condivise

Analogamente a una sottoscrizione durevole condivisa, viene usata una sottoscrizione durevole non condivisa quando tutti i messaggi pubblicati in un argomento devono essere ricevuti ed elaborati da un'applicazione, indipendentemente dal fatto che l'applicazione stia utilizzando attivamente dalla sottoscrizione.

Tuttavia, poiché questa sottoscrizione è una sottoscrizione non condivisa, solo l'applicazione che ha creato la sottoscrizione può ricevere da essa.

Per creare una sottoscrizione durevole non condivisa, usare i metodi seguenti dalla JMSContext classe :

JMSConsumer createDurableConsumer(Topic topic, String name)

JMSConsumer createDurableConsumer(Topic topic, String name, String messageSelector, boolean noLocal)

Annotazioni

La noLocal funzionalità non è attualmente supportata e ignorata.

La sottoscrizione durevole non condivisa continua a esistere a meno che non venga eliminata usando il unsubscribe metodo nella JMSContext classe .

void unsubscribe(String name)

Sottoscrizioni condivise non durevoli

Una sottoscrizione condivisa non permanente viene usata quando più applicazioni client devono ricevere ed elaborare messaggi da una singola sottoscrizione, finché le applicazioni li consumano/ricevono attivamente dalla stessa.

Poiché la sottoscrizione non dura, non viene salvata in modo permanente. I messaggi non vengono ricevuti da questo abbonamento quando non ci sono consumer attivi.

Per creare una sottoscrizione condivisa non durevole, creare un oggetto JmsConsumer come illustrato nei metodi seguenti dalla JMSContext classe :

JMSConsumer createSharedConsumer(Topic topic, String sharedSubscriptionName)

JMSConsumer createSharedConsumer(Topic topic, String sharedSubscriptionName, String messageSelector)

La sottoscrizione condivisa non durevole continua a esistere finché ci sono consumatori attivi che ne ricevono.

Sottoscrizioni non condivise e non permanenti

Una sottoscrizione non permanente e non condivisa viene utilizzata quando l'applicazione client deve ricevere ed elaborare messaggi da una sottoscrizione, solo fino a quando ne usufruisce attivamente. In questa sottoscrizione può esistere un solo consumer, ovvero il client che ha creato la sottoscrizione.

Poiché la sottoscrizione non dura, non viene salvata in modo permanente. I messaggi non vengono ricevuti da questa sottoscrizione quando non è presente alcun consumer attivo.

Per creare una sottoscrizione non condivisa e non durevole, creare un oggetto JMSConsumer come illustrato nei metodi seguenti della classe JMSContext:

JMSConsumer createConsumer(Destination destination)

JMSConsumer createConsumer(Destination destination, String messageSelector)

JMSConsumer createConsumer(Destination destination, String messageSelector, boolean noLocal)

Annotazioni

La noLocal funzionalità non è attualmente supportata e ignorata.

La sottoscrizione non condivisa continua a esistere fino a quando c'è un consumatore attivo che riceve da essa.

Selettori di messaggi

Analogamente ai filtri e alle azioni , esistono per le normali sottoscrizioni del bus di servizio, i selettori di messaggi esistono per le sottoscrizioni JMS.

I selettori di messaggio possono essere configurati in ognuna delle sottoscrizioni JMS ed esistono come condizione di filtro nelle proprietà dell'intestazione del messaggio. Vengono recapitati solo i messaggi con proprietà di intestazione corrispondenti all'espressione del selettore di messaggio. Un valore null o una stringa vuota indica che non esiste un selettore di messaggi per la sottoscrizione/consumer JMS.

Concetti aggiuntivi per le sottoscrizioni di Java Message Service (JMS) 2.0

Definizione dell'ambito del cliente

Le sottoscrizioni, come specificato nell'API JMS (Java Message Service) 2.0, potrebbero o non essere incluse nell'ambito di applicazioni client specifiche (identificate con l'oggetto appropriato clientId).

Una volta che la sottoscrizione è stata delimitata, vi si può accedere solo dalle applicazioni client con lo stesso ID client.

Qualsiasi tentativo di accedere a una sottoscrizione con ambito a un ID client specifico (ad esempio clientId1) da un'applicazione con un altro ID client (ad esempio clientId2) porterà alla creazione di un'altra sottoscrizione con ambito l'altro ID client (clientId2).

Annotazioni

L'ID client può essere null o vuoto, ma deve corrispondere all'ID client impostato nell'applicazione client JMS. Dal punto di vista del bus di servizio di Azure, un ID client Null e un ID client vuoto hanno lo stesso comportamento.

Se l'ID client è impostato su null o vuoto, è accessibile solo alle applicazioni client il cui ID client è impostato anche su null o vuoto.

Condivisibilità

Le sottoscrizioni condivise consentono a più client/consumer (ovvero oggetti JMSConsumer) di ricevere messaggi da essi.

Annotazioni

Le sottoscrizioni condivise con ambito a un ID client specifico possono comunque essere accessibili da più client/consumer (ovvero oggetti JMSConsumer), ma ognuna delle applicazioni client deve avere lo stesso ID client.

Le sottoscrizioni non condivise consentono solo a un singolo client/consumer (ovvero, oggetto JMSConsumer) di ricevere messaggi da essi. Se un JMSConsumer viene creato in una sottoscrizione non condivisa mentre ha già un JMSConsumer attivo in ascolto dei messaggi, viene lanciata un' JMSException.

Durability

Le sottoscrizioni permanenti vengono rese persistenti e continuano a raccogliere messaggi dall'argomento, indipendentemente dal fatto che un'applicazione (JMSConsumer) stia utilizzando i messaggi.

Le sottoscrizioni non durevoli non sono persistenti e raccolgono messaggi dall'argomento purché un'applicazione (JMSConsumer) stia consumando messaggi da esso.

Rappresentazione degli abbonamenti con ambito cliente

Dato che le sottoscrizioni con ambito client (JMS) devono coesistere con le sottoscrizioni esistenti, il modo in cui le sottoscrizioni con ambito client (JMS) sono rappresentate usano il formato seguente.

  • <SUBSCRIPTION-NAME>$<CLIENT-ID>$D (per sottoscrizioni durevoli)
  • <SUBSCRIPTION-NAME>$<CLIENT-ID>$ND (per sottoscrizioni nondurable)

$ Ecco il delimitatore.

Passaggi successivi

Per altre informazioni ed esempi sull'uso della messaggistica del bus di servizio, vedere gli argomenti avanzati seguenti: