Entità di JMS (Java Message Service) 2.0
Le applicazioni client che si connettono a bus di servizio di Azure Premium e usano la libreria JMS bus di servizio di Azure possono usare le entità seguenti.
Code
Le code in JMS sono semanticamente confrontabili con le code tradizionali del bus di servizio.
Per creare una coda, usare i metodi seguenti nella JMSContext
classe :
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, esistono argomenti temporanei per abilitare la pubblicazione/sottoscrizione tramite un'entità temporanea esistente 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 sono semanticamente simili alle sottoscrizioni (vale a dire, esistono in un argomento e abilitano la semantica di pubblicazione/sottoscrizione), la specifica del servizio messaggi Java introduce i concetti degli attributi Condivisi, Non condivisi, **Durable e Non durevoli per una determinata sottoscrizione.
Nota
Le sottoscrizioni seguenti sono disponibili in bus di servizio di Azure livello Premium per le applicazioni client che si connettono a bus di servizio di Azure usando la libreria bus di servizio di Azure JMS.
È possibile creare solo sottoscrizioni durevoli usando il portale di Azure.
Sottoscrizioni durevoli condivise
Una sottoscrizione durevole 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 utilizzando attivamente dalla sottoscrizione in qualsiasi momento.
Qualsiasi applicazione autenticata da ricevere dal bus di servizio può ricevere dalla sottoscrizione durevole 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 durevoli 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é si tratta di 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)
Nota
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 non durevoli condivise
Una sottoscrizione condivisa non durevole viene usata quando più applicazioni client devono ricevere ed elaborare messaggi da una singola sottoscrizione, solo fino a quando non utilizzano/ricevono attivamente da essa.
Poiché la sottoscrizione non è durevole, non viene salvata in modo permanente. I messaggi non vengono ricevuti da questa sottoscrizione quando non sono presenti 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 fino a quando non vengono ricevuti consumer attivi.
Sottoscrizioni non durevoli non condivise
Una sottoscrizione non durevole non condivisa viene usata quando l'applicazione client deve ricevere ed elaborare messaggi da una sottoscrizione, solo fino a quando non viene attivamente utilizzata da essa. In questa sottoscrizione può esistere un solo consumer, ovvero il client che ha creato la sottoscrizione.
Poiché la sottoscrizione non è durevole, 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 durevole non condivisa, creare un oggetto JMSConsumer
come illustrato nei metodi seguenti dalla JMSContext
classe :
JMSConsumer createConsumer(Destination destination)
JMSConsumer createConsumer(Destination destination, String messageSelector)
JMSConsumer createConsumer(Destination destination, String messageSelector, boolean noLocal)
Nota
La noLocal
funzionalità non è attualmente supportata e ignorata.
La sottoscrizione non durevole non condivisa continua a esistere fino a quando non viene ricevuto da un consumer attivo.
Selettori di messaggi
Analogamente all'esistenza di filtri e azioni per le normali sottoscrizioni del bus di servizio, esistono selettori di messaggi 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 messaggi. Un valore null o una stringa vuota indica che non è presente alcun selettore di messaggi per la sottoscrizione/consumer JMS.
Concetti aggiuntivi per le sottoscrizioni di Java Message Service (JMS) 2.0
Definizione dell'ambito del client
Le sottoscrizioni, come specificato nell'API Java Message Service (JMS) 2.0, possono o meno essere incluse nell'ambito di applicazioni client o s specifiche (identificate con l'appropriato clientId
).
Dopo l'ambito della sottoscrizione, è possibile accedervi solo dalle applicazioni client con lo stesso ID client.
Qualsiasi tentativo di accesso 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 all'altro ID client (clientId2).
Nota
L'ID client può essere Null o vuoto, ma deve corrispondere all'ID client impostato nell'applicazione client JMS. Dal punto di vista 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.
Nota
È comunque possibile accedere a sottoscrizioni condivise con un ID client specifico da più client/consumer (ad esempio 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 tali sottoscrizioni. Se un JMSConsumer
oggetto viene creato in una sottoscrizione non condivisa mentre dispone già di un ascolto attivo JMSConsumer
dei messaggi su di esso, viene generata un'eccezione JMSException
.
Durabilità
Le sottoscrizioni durevoli 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 utilizzando i messaggi.
Rappresentazione delle sottoscrizioni con ambito client
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 nel formato seguente.
- <SUBSCRIPTION-NAME>$<CLIENT-ID>$D (per le sottoscrizioni durevoli)
- <SUBSCRIPTION-NAME>$<CLIENT-ID>$ND (per sottoscrizioni non durevoli)
Di seguito è $ riportato il delimitatore.
Passaggi successivi
Per altri esempi e informazioni sull'uso della messaggistica del bus di servizio, vedere gli argomenti avanzati seguenti: