Delen via


Java Message Service (JMS) 2.0-entiteiten

Clienttoepassingen die verbinding maken met Azure Service Bus Premium en de Azure Service Bus JMS-bibliotheek gebruiken, kunnen de onderstaande entiteiten gebruiken.

Wachtrijen

Wachtrijen in JMS zijn semantisch vergelijkbaar met de traditionele Service Bus-wachtrijen.

Als u een wachtrij wilt maken, gebruikt u de onderstaande methoden in de JMSContext klasse -

Queue createQueue(String queueName)

Onderwerpen

Onderwerpen in JMS zijn semantisch vergelijkbaar met de traditionele Service Bus-onderwerpen.

Als u een onderwerp wilt maken, gebruikt u de onderstaande methoden in de JMSContext klasse -

Topic createTopic(String topicName)

Tijdelijke wachtrijen

Als voor een clienttoepassing een tijdelijke entiteit is vereist die bestaat voor de levensduur van de toepassing, kan deze tijdelijke wachtrijen gebruiken. Deze entiteiten worden gebruikt in het patroon Request-Reply .

Als u een tijdelijke wachtrij wilt maken, gebruikt u de onderstaande methoden in de JMSContext klasse -

TemporaryQueue createTemporaryQueue()

Tijdelijke onderwerpen

Net als tijdelijke wachtrijen bestaan tijdelijke onderwerpen om publiceren/abonneren mogelijk te maken via een tijdelijke entiteit die bestaat voor de levensduur van de toepassing.

Als u een tijdelijk onderwerp wilt maken, gebruikt u de onderstaande methoden in de JMSContext klasse -

TemporaryTopic createTemporaryTopic()

JMS-abonnementen (Java Message Service)

Hoewel deze semantisch vergelijkbaar zijn met de abonnementen (dat wil gezegd, bestaan in een onderwerp en semantiek publiceren/abonneren inschakelen), introduceert de Java Message Service-specificatie de concepten Gedeelde, Niet-gedeelde, **Duurzame en Niet-duurzame kenmerken voor een bepaald abonnement.

Notitie

De onderstaande abonnementen zijn beschikbaar in Azure Service Bus Premium-laag voor clienttoepassingen die verbinding maken met Azure Service Bus met behulp van de Azure Service Bus JMS-bibliotheek.

Alleen duurzame abonnementen kunnen worden gemaakt met behulp van de Azure Portal.

Gedeelde duurzame abonnementen

Een gedeeld duurzaam abonnement wordt gebruikt wanneer alle berichten die in een onderwerp worden gepubliceerd, moeten worden ontvangen en verwerkt door een toepassing, ongeacht of de toepassing te allen tijde actief gebruikmaakt van het abonnement.

Elke toepassing die is geverifieerd voor ontvangst van Service Bus, kan ontvangen van het gedeelde duurzame abonnement.

Als u een gedeeld duurzaam abonnement wilt maken, gebruikt u de onderstaande methoden voor de JMSContext klasse -

JMSConsumer createSharedDurableConsumer(Topic topic, String name)

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

Het gedeelde duurzame abonnement blijft bestaan, tenzij het wordt verwijderd met behulp van de unsubscribe methode voor de JMSContext klasse.

void unsubscribe(String name)

Niet-gedeelde duurzame abonnementen

Net als bij een gedeeld duurzaam abonnement wordt een niet-gedeeld duurzaam abonnement gebruikt wanneer alle berichten die over een onderwerp worden gepubliceerd, moeten worden ontvangen en verwerkt door een toepassing, ongeacht of de toepassing actief gebruikmaakt van het abonnement.

Omdat dit echter een niet-gedeeld abonnement is, kan alleen de toepassing die het abonnement heeft gemaakt, hiervan ontvangen.

Als u een niet-gedeeld duurzaam abonnement wilt maken, gebruikt u de onderstaande methoden uit JMSContext de klasse -

JMSConsumer createDurableConsumer(Topic topic, String name)

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

Notitie

De noLocal functie wordt momenteel niet ondersteund en genegeerd.

Het niet-gedeelde duurzame abonnement blijft bestaan, tenzij het wordt verwijderd met behulp van de unsubscribe methode voor de JMSContext klasse.

void unsubscribe(String name)

Gedeelde niet-duurzame abonnementen

Een gedeeld niet-duurzaam abonnement wordt gebruikt wanneer meerdere clienttoepassingen berichten van één abonnement moeten ontvangen en verwerken, totdat ze er actief gebruik van maken/ontvangen.

Omdat het abonnement niet duurzaam is, wordt het niet persistent. Berichten worden niet ontvangen door dit abonnement wanneer er geen actieve consumenten zijn.

Als u een gedeeld niet-duurzaam abonnement wilt maken, maakt u een JmsConsumer zoals wordt weergegeven in de onderstaande methoden van de JMSContext klasse -

JMSConsumer createSharedConsumer(Topic topic, String sharedSubscriptionName)

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

Het gedeelde niet-duurzame abonnement blijft bestaan totdat er actieve consumenten zijn die er van ontvangen.

Niet-gedeelde niet-duurzame abonnementen

Een niet-gedeeld niet-duurzaam abonnement wordt gebruikt wanneer de clienttoepassing berichten van een abonnement moet ontvangen en verwerken, totdat het actief wordt verbruikt. Dit abonnement kan slechts één consument bevatten, namelijk de client die het abonnement heeft gemaakt.

Omdat het abonnement niet duurzaam is, wordt het niet persistent. Berichten worden niet ontvangen door dit abonnement wanneer er geen actieve consument voor is.

Als u een niet-gedeeld niet-duurzaam abonnement wilt maken, maakt u een JMSConsumer zoals wordt weergegeven in de onderstaande methoden van de JMSContext klasse -

JMSConsumer createConsumer(Destination destination)

JMSConsumer createConsumer(Destination destination, String messageSelector)

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

Notitie

De noLocal functie wordt momenteel niet ondersteund en genegeerd.

Het niet-gedeelde niet-duurzame abonnement blijft bestaan totdat er een actieve consument van het abonnement ontvangt.

Berichtkiezers

Net zoals filters en acties bestaan voor reguliere Service Bus-abonnementen, bestaan er berichtkiezers voor JMS-abonnementen.

Berichtkiezers kunnen worden ingesteld voor elk van de JMS-abonnementen en bestaan als een filtervoorwaarde voor de berichtkopeigenschappen. Alleen berichten met kopteksteigenschappen die overeenkomen met de berichtkiezerexpressie worden bezorgd. Een waarde van null of een lege tekenreeks geeft aan dat er geen berichtkiezer is voor het JMS-abonnement/de gebruiker.

Aanvullende concepten voor JMS 2.0-abonnementen (Java Message Service)

Clientbereik

Abonnementen, zoals opgegeven in de Java Message Service (JMS) 2.0 API, kunnen al dan niet worden beperkt tot specifieke clienttoepassingen (geïdentificeerd met de juiste clientId).

Zodra het abonnement is bereikt, kan het alleen worden geopend vanuit clienttoepassingen met dezelfde client-id.

Pogingen om toegang te krijgen tot een abonnement dat is gericht op een specifieke client-id (bijvoorbeeld clientId1) vanuit een toepassing met een andere client-id (bijvoorbeeld clientId2), leiden tot het maken van een ander abonnement dat is afgestemd op de andere client-id (clientId2).

Notitie

Client-id kan null of leeg zijn, maar moet overeenkomen met de client-id die is ingesteld in de JMS-clienttoepassing. Vanuit het Azure Service Bus perspectief hebben een null-client-id en een lege client-id hetzelfde gedrag.

Als de client-id is ingesteld op null of leeg, is deze alleen toegankelijk voor clienttoepassingen waarvan de client-id ook is ingesteld op null of leeg.

Deelbaarheid

Met gedeelde abonnementen kunnen meerdere client-/consumentenobjecten (JMSConsumer-objecten) berichten van hen ontvangen.

Notitie

Gedeelde abonnementen die zijn gericht op een specifieke client-id kunnen nog steeds worden geopend door meerdere client/consumenten (dat wil zeggen JMSConsumer-objecten), maar elk van de clienttoepassingen moet dezelfde client-id hebben.

Met niet-gedeelde abonnementen kan slechts één client/consument (JMSConsumer-object) berichten van hen ontvangen. Als een JMSConsumer is gemaakt in een niet-gedeeld abonnement terwijl er al een actief JMSConsumer luistert naar berichten, wordt er een JMSException gegenereerd.

Duurzaamheid

Duurzame abonnementen blijven behouden en blijven berichten van het onderwerp verzamelen, ongeacht of een toepassing (JMSConsumer) berichten van het onderwerp verbruikt.

Niet-duurzame abonnementen blijven niet behouden en verzamelen berichten van het onderwerp zolang een toepassing (JMSConsumer) berichten van het onderwerp verbruikt.

Weergave van klantabonnementen

Aangezien de JMS-abonnementen (clientbereik) naast de bestaande abonnementen moeten bestaan, volgt de manier waarop de JMS-abonnementen (client scoped) worden weergegeven, de onderstaande indeling.

  • <SUBSCRIPTION-NAME>$<CLIENT-ID>$D (voor duurzame abonnementen)
  • <SUBSCRIPTION-NAME>$<CLIENT-ID>$ND (voor niet-duurzame abonnementen)

$ Hier is het scheidingsteken.

Volgende stappen

Zie de volgende geavanceerde onderwerpen voor meer informatie en voorbeelden van het gebruik van Service Bus-berichten: