JMS 2.0-entiteter (Java Message Service)

Klientprogram som ansluter till Azure Service Bus Premium och använder JMS-biblioteket Azure Service Bus kan använda nedanstående entiteter.

Köer

Köer i JMS är semantiskt jämförbara med de traditionella Service Bus-köerna.

Om du vill skapa en kö använder du metoderna nedan i JMSContext klassen -

Queue createQueue(String queueName)

Ämnen

Ämnena i JMS är semantiskt jämförbara med de traditionella Service Bus-ämnena.

Om du vill skapa ett ämne använder du metoderna nedan i JMSContext klassen -

Topic createTopic(String topicName)

Tillfälliga köer

Om ett klientprogram kräver en tillfällig entitet som finns under programmets livslängd kan det använda tillfälliga köer. Dessa entiteter används i mönstret Request-Reply .

Om du vill skapa en tillfällig kö använder du metoderna nedan i JMSContext klassen -

TemporaryQueue createTemporaryQueue()

Tillfälliga ämnen

Precis som temporära köer finns det tillfälliga ämnen för att aktivera publicering/prenumeration via en tillfällig entitet som finns under programmets livslängd.

Om du vill skapa ett tillfälligt ämne använder du metoderna nedan i JMSContext klassen -

TemporaryTopic createTemporaryTopic()

JMS-prenumerationer (Java Message Service)

Även om dessa är semantiskt lika prenumerationerna (dvs. finns i ett ämne och aktiverar publicerings-/prenumerationssemantik), introducerar Java Message Service-specifikationen begreppen Delade, Ej delade, **Beständiga och Icke-hållbara attribut för en viss prenumeration.

Anteckning

Prenumerationerna nedan är tillgängliga på Azure Service Bus Premium-nivå för klientprogram som ansluter till Azure Service Bus med hjälp av JMS-biblioteket Azure Service Bus.

Endast varaktiga prenumerationer kan skapas med hjälp av Azure Portal.

Delade varaktiga prenumerationer

En delad varaktig prenumeration används när alla meddelanden som publiceras i ett ämne ska tas emot och bearbetas av ett program, oavsett om programmet alltid använder aktivt från prenumerationen.

Alla program som autentiseras för att ta emot från Service Bus kan ta emot från den delade varaktiga prenumerationen.

Om du vill skapa en delad varaktig prenumeration använder du metoderna nedan i JMSContext klassen -

JMSConsumer createSharedDurableConsumer(Topic topic, String name)

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

Den delade varaktiga prenumerationen fortsätter att finnas om den unsubscribe inte tas bort med hjälp av -metoden i JMSContext klassen .

void unsubscribe(String name)

Ej delade varaktiga prenumerationer

Precis som en delad varaktig prenumeration används en odelad varaktig prenumeration när alla meddelanden som publiceras i ett ämne ska tas emot och bearbetas av ett program, oavsett om programmet aktivt använder från prenumerationen.

Men eftersom det här är en odelad prenumeration kan endast det program som skapade prenumerationen ta emot från den.

Om du vill skapa en beständig prenumeration som inte delas använder du metoderna nedan från JMSContext klassen -

JMSConsumer createDurableConsumer(Topic topic, String name)

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

Anteckning

Funktionen noLocal stöds för närvarande inte och ignoreras.

Den varaktiga prenumerationen som inte delas fortsätter att finnas om den unsubscribe inte tas bort med hjälp av metoden i JMSContext klassen .

void unsubscribe(String name)

Delade icke-varaktiga prenumerationer

En delad icke-varaktig prenumeration används när flera klientprogram behöver ta emot och bearbeta meddelanden från en enda prenumeration, endast tills de aktivt använder/tar emot från den.

Eftersom prenumerationen inte är beständig sparas den inte. Meddelanden tas inte emot av den här prenumerationen när det inte finns några aktiva konsumenter på den.

Om du vill skapa en delad icke-varaktig prenumeration skapar du en JmsConsumer som du ser i metoderna nedan från JMSContext klassen -

JMSConsumer createSharedConsumer(Topic topic, String sharedSubscriptionName)

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

Den delade icke-varaktiga prenumerationen fortsätter att finnas tills det finns aktiva konsumenter som tar emot den.

Ej delade icke-varaktiga prenumerationer

En icke-varaktig prenumeration som inte delas används när klientprogrammet behöver ta emot och bearbeta meddelanden från en prenumeration, bara tills det aktivt förbrukar från den. Endast en konsument kan finnas i den här prenumerationen, dvs. klienten som skapade prenumerationen.

Eftersom prenumerationen inte är beständig sparas den inte. Meddelanden tas inte emot av den här prenumerationen när det inte finns någon aktiv konsument på den.

Om du vill skapa en icke-beständig prenumeration som inte delas skapar du en JMSConsumer som du ser i metoderna nedan från JMSContext klassen -

JMSConsumer createConsumer(Destination destination)

JMSConsumer createConsumer(Destination destination, String messageSelector)

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

Anteckning

Funktionen noLocal stöds för närvarande inte och ignoreras.

Den icke-varaktiga prenumerationen som inte delas fortsätter att finnas tills en aktiv konsument tar emot den.

Meddelandeväljare

Precis som filter och åtgärder finns för vanliga Service Bus-prenumerationer finns meddelandeväljare för JMS-prenumerationer.

Meddelandeväljare kan konfigureras för var och en av JMS-prenumerationerna och finnas som ett filtervillkor för egenskaperna för meddelanderubriken. Endast meddelanden med rubrikegenskaper som matchar meddelandeväljarens uttryck levereras. Värdet null eller en tom sträng anger att det inte finns någon meddelandeväljare för JMS-prenumerationen/konsumenten.

Ytterligare begrepp för JMS 2.0-prenumerationer (Java Message Service)

Klientomfång

Prenumerationer, som anges i Java Message Service (JMS) 2.0-API:et, kanske inte är begränsade till specifika klientprogram (identifieras med lämpligt clientId).

När prenumerationen är begränsad kan den bara nås från klientprogram som har samma klient-ID.

Alla försök att komma åt en prenumeration som är begränsad till ett specifikt klient-ID (till exempel clientId1) från ett program som har ett annat klient-ID (till exempel clientId2) leder till skapandet av en annan prenumeration som är begränsad till det andra klient-ID:t (clientId2).

Anteckning

Klient-ID kan vara null eller tomt, men det måste matcha det klient-ID som angetts i JMS-klientprogrammet. Ur Azure Service Bus perspektiv har ett null-klient-ID och ett tomt klient-ID samma beteende.

Om klient-ID:t är inställt på null eller tomt är det endast tillgängligt för klientprogram vars klient-ID också är inställt på null eller tomt.

Delning

Delade prenumerationer tillåter att flera klient-/konsumentobjekt (dvs. JMSConsumer-objekt) tar emot meddelanden från dem.

Anteckning

Delade prenumerationer som är begränsade till ett specifikt klient-ID kan fortfarande nås av flera klienter/konsumenter (dvs. JMSConsumer-objekt), men vart och ett av klientprogrammen måste ha samma klient-ID.

Prenumerationer som inte har delats tillåter endast en enskild klient/konsument (d.v.s. JMSConsumer-objekt) att ta emot meddelanden från dem. Om en JMSConsumer skapas i en prenumeration som inte har delats medan den redan har en aktiv JMSConsumer lyssning av meddelanden på den, genereras en JMSException .

Varaktighet

Beständiga prenumerationer bevaras och fortsätter att samla in meddelanden från ämnet, oavsett om ett program (JMSConsumer) använder meddelanden från det.

Icke-varaktiga prenumerationer sparas inte och samlar in meddelanden från ämnet så länge ett program (JMSConsumer) använder meddelanden från det.

Representation av klientomfattande prenumerationer

Med tanke på att JMS-prenumerationerna (klientomfattning) måste finnas tillsammans med de befintliga prenumerationerna, visas det sätt på vilket JMS-prenumerationer (klientomfattning) representeras enligt nedanstående format.

  • <KLIENT-ID FÖR PRENUMERATIONSNAMN>$<(för beständiga prenumerationer>)$
  • <PRENUMERATIONSNAMN>$<KLIENT-ID>$ND (för icke-varaktiga prenumerationer)

$ Här är avgränsare.

Nästa steg

Mer information och exempel på hur du använder Service Bus-meddelanden finns i följande avancerade ämnen: