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 clientId
interfejsu 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: