Jednostki usługi komunikatów Java (JMS) 2.0

Aplikacje klienckie łączące się z usługą Azure Service Bus Premium i korzystające z biblioteki Azure Service Bus JMS mogą używać poniższych jednostek.

Kolejki

Kolejki w programie JMS są semantycznie porównywalne z tradycyjnymi kolejkami usługi Service Bus.

Aby utworzyć kolejkę, użyj poniższych metod w JMSContext klasie —

Queue createQueue(String queueName)

Tematy

Tematy w programie JMS są semantycznie porównywalne z tradycyjnymi tematami usługi Service Bus.

Aby utworzyć temat, użyj poniższych metod w JMSContext klasie —

Topic createTopic(String topicName)

Kolejki tymczasowe

Jeśli aplikacja kliencka wymaga tymczasowej jednostki, która istnieje przez okres istnienia aplikacji, może używać kolejek tymczasowych. Te jednostki są używane we wzorcu Request-Reply .

Aby utworzyć kolejkę tymczasową, użyj poniższych metod w JMSContext klasie —

TemporaryQueue createTemporaryQueue()

Tematy tymczasowe

Podobnie jak w przypadku kolejek tymczasowych istnieją tematy tymczasowe umożliwiające publikowanie/subskrybowanie za pośrednictwem jednostki tymczasowej, która istnieje przez cały okres istnienia aplikacji.

Aby utworzyć temat tymczasowy, użyj poniższych metod w JMSContext klasie —

TemporaryTopic createTemporaryTopic()

Subskrypcje usługi komunikatów w języku Java (JMS)

Chociaż są one semantycznie podobne do subskrypcji (tj. istnieją w temacie i włączają semantyka publikowania/subskrybowania), specyfikacja usługi Komunikat Języka Java wprowadza koncepcje atrybutów Shared, Unshared, **Durable i Non-durable dla danej subskrypcji.

Uwaga

Poniższe subskrypcje są dostępne w Azure Service Bus warstwie Premium dla aplikacji klienckich łączących się z Azure Service Bus przy użyciu biblioteki JMS Azure Service Bus.

Przy użyciu Azure Portal można tworzyć tylko trwałe subskrypcje.

Współużytkowane trwałe subskrypcje

Udostępniona trwała subskrypcja jest używana, gdy wszystkie komunikaty opublikowane w temacie mają być odbierane i przetwarzane przez aplikację, niezależnie od tego, czy aplikacja aktywnie korzysta z subskrypcji przez cały czas.

Każda aplikacja uwierzytelniona do odbierania z usługi Service Bus może pochodzić z udostępnionej trwałej subskrypcji.

Aby utworzyć udostępnioną trwałą subskrypcję, użyj poniższych metod w JMSContext klasie —

JMSConsumer createSharedDurableConsumer(Topic topic, String name)

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

Udostępniona trwała subskrypcja nadal istnieje, chyba że została usunięta przy użyciu unsubscribe metody w JMSContext klasie .

void unsubscribe(String name)

Subskrypcje trwałe nieudostępniane

Podobnie jak w przypadku współużytkowanej trwałej subskrypcji jest używana, gdy wszystkie komunikaty opublikowane w temacie mają być odbierane i przetwarzane przez aplikację, niezależnie od tego, czy aplikacja aktywnie korzysta z subskrypcji.

Jednak ponieważ jest to subskrypcja nieudostępniana, tylko aplikacja, która utworzyła subskrypcję, może otrzymać od niej dostęp.

Aby utworzyć nieudostępniętą subskrypcję trwałą, użyj poniższych metod z JMSContext klasy —

JMSConsumer createDurableConsumer(Topic topic, String name)

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

Uwaga

Ta noLocal funkcja jest obecnie nieobsługiwana i ignorowana.

Nieudostępniana trwała subskrypcja nadal istnieje, chyba że została usunięta przy użyciu unsubscribe metody w JMSContext klasie .

void unsubscribe(String name)

Współużytkowane subskrypcje nietrwałe

Udostępniona subskrypcja nietrwała jest używana, gdy wiele aplikacji klienckich musi odbierać i przetwarzać komunikaty z jednej subskrypcji, tylko do momentu, gdy będą aktywnie korzystać z niej/odbierać je.

Ponieważ subskrypcja nie jest trwała, nie jest ona utrwalana. Komunikaty nie są odbierane przez tę subskrypcję, gdy nie ma w niej aktywnych użytkowników.

Aby utworzyć udostępnioną subskrypcję nietrwałą, utwórz element JmsConsumer , jak pokazano w poniższych metodach z JMSContext klasy —

JMSConsumer createSharedConsumer(Topic topic, String sharedSubscriptionName)

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

Udostępniona subskrypcja nietrwała nadal istnieje do momentu otrzymania od niej aktywnych użytkowników.

Subskrypcje nietrwałe nietrwałe

Nieudostępniana subskrypcja nietrwała jest używana, gdy aplikacja kliencka musi odbierać i przetwarzać komunikaty z subskrypcji, tylko do momentu, gdy będzie aktywnie z niej korzystać. W tej subskrypcji może istnieć tylko jeden użytkownik, czyli klient, który utworzył subskrypcję.

Ponieważ subskrypcja nie jest trwała, nie jest ona utrwalana. Komunikaty nie są odbierane przez tę subskrypcję, gdy nie ma na niej aktywnego konsumenta.

Aby utworzyć nieudostępniową subskrypcję, utwórz obiekt JMSConsumer , jak pokazano w poniższych metodach z JMSContext klasy —

JMSConsumer createConsumer(Destination destination)

JMSConsumer createConsumer(Destination destination, String messageSelector)

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

Uwaga

Ta noLocal funkcja jest obecnie nieobsługiwana i ignorowana.

Nieudostępniana subskrypcja nietrwała nadal istnieje, dopóki nie otrzyma od niej aktywnego konsumenta.

Selektory komunikatów

Podobnie jak filtry i akcje istnieją dla zwykłych subskrypcji usługi Service Bus, selektory komunikatów istnieją dla subskrypcji JMS.

Selektory komunikatów można skonfigurować w każdej subskrypcji JMS i istnieć jako warunek filtru we właściwościach nagłówka wiadomości. Dostarczane są tylko komunikaty z właściwościami nagłówka pasującymi do wyrażenia selektora komunikatów. Wartość null lub pusty ciąg wskazuje, że nie ma selektora komunikatów dla subskrypcji/odbiorcy pakietu JMS.

Dodatkowe pojęcia dotyczące subskrypcji usługi Java Message Service (JMS) 2.0

Określanie zakresu klienta

Subskrypcje, jak określono w interfejsie API usługi Java Message Service (JMS) 2.0, mogą być ograniczone do określonych aplikacji klienckich/s (zidentyfikowanych przy użyciu odpowiedniego clientIdinterfejsu API).

Po uzyskaniu zakresu subskrypcji można uzyskać do niej dostęp tylko z aplikacji klienckich, które mają ten sam identyfikator klienta.

Każda próba uzyskania dostępu do subskrypcji o określonym zakresie do określonego identyfikatora klienta (np. clientId1) z aplikacji o innym identyfikatorze klienta (np. clientId2) spowoduje utworzenie innej subskrypcji o określonym zakresie dla innego identyfikatora klienta (clientId2).

Uwaga

Identyfikator klienta może mieć wartość null lub może być pusty, ale musi być zgodny z identyfikatorem klienta ustawionym w aplikacji klienckiej JMS. Z perspektywy Azure Service Bus identyfikator klienta o wartości null i pusty identyfikator klienta mają takie samo zachowanie.

Jeśli identyfikator klienta ma wartość null lub jest pusty, jest dostępny tylko dla aplikacji klienckich, których identyfikator klienta jest również ustawiony na wartość null lub jest pusty.

Możliwość udostępniania

Subskrypcje udostępnione umożliwiają odbieranie komunikatów z wielu klientów/konsumentów (czyli obiektów JMSConsumer).

Uwaga

Udostępnione subskrypcje ograniczone do określonego identyfikatora klienta nadal mogą być dostępne przez wielu klientów/odbiorców (tj. obiektów JMSConsumer), ale każda aplikacja kliencka musi mieć ten sam identyfikator klienta.

Subskrypcje nieudostępniane zezwalają tylko jednemu klientowi/odbiorcy (czyli obiektowi JMSConsumer) na odbieranie od nich komunikatów. Jeśli element JMSConsumer jest tworzony w ramach subskrypcji nieudostępnianej, gdy ma już aktywne JMSConsumer nasłuchiwanie komunikatów na nim, JMSException jest zgłaszany.

Trwałość

Trwałe subskrypcje są utrwalane i nadal zbierają komunikaty z tematu, niezależnie od tego, czy aplikacja (JMSConsumer) korzysta z komunikatów.

Subskrypcje nietrwałe nie są utrwalane i zbierają komunikaty z tematu, o ile aplikacja (JMSConsumer) korzysta z komunikatów z tego tematu.

Reprezentacja subskrypcji z zakresem klienta

Biorąc pod uwagę, że subskrypcje o zakresie klienta (JMS) muszą współistnieć z istniejącymi subskrypcjami, sposób reprezentowania subskrypcji o zakresie klienta (JMS) jest zgodna z poniższym formatem.

  • <SUBSCRIPTION-NAME>$<CLIENT-ID>$D (dla trwałych subskrypcji)
  • <SUBSCRIPTION-NAME>$<CLIENT-ID>$ND (w przypadku subskrypcji nietrwałych)

$ Oto ogranicznik.

Następne kroki

Aby uzyskać więcej informacji i przykłady korzystania z komunikatów usługi Service Bus, zobacz następujące zaawansowane tematy: