Entity služby zpráv Java (JMS) 2.0
Klientské aplikace, které se připojují k Azure Service Bus Premium a používají knihovnu Azure Service Bus JMS, můžou používat následující entity.
Fronty
Fronty v JMS jsou sémanticky srovnatelné s tradičními frontami služby Service Bus.
K vytvoření fronty použijte následující metody ve JMSContext
třídě :
Queue createQueue(String queueName)
Témata
Témata v JMS jsou sémanticky srovnatelná s tradičními tématy služby Service Bus.
Pokud chcete vytvořit téma, použijte následující metody ve JMSContext
třídě -
Topic createTopic(String topicName)
Dočasné fronty
Pokud klientská aplikace vyžaduje dočasnou entitu, která existuje po celou dobu života aplikace, může použít dočasné fronty. Tyto entity se používají ve vzoru Požadavek-Odpověď .
Pokud chcete vytvořit dočasnou frontu, použijte následující metody ve JMSContext
třídě :
TemporaryQueue createTemporaryQueue()
Dočasná témata
Stejně jako dočasné fronty existují i dočasná témata, která umožňují publikování a přihlášení k odběru prostřednictvím dočasné entity, která existuje po celou dobu životnosti aplikace.
Chcete-li vytvořit dočasné téma, použijte následující metody ve JMSContext
třídě -
TemporaryTopic createTemporaryTopic()
Odběry JMS (Java Message Service)
I když jsou sémanticky podobné předplatným (to znamená, že existují v tématu a umožňují sémantiku publikování/odběru), specifikace služby Zpráv v Javě zavádí pro dané předplatné koncepty atributů Shared (Sdílené), Unshared (Nesdílené), **Durable (Trvalý) a Non-durable (Non-durable ).
Poznámka
Níže uvedená předplatná jsou dostupná v Azure Service Bus úrovni Premium pro klientské aplikace, které se připojují ke Azure Service Bus pomocí knihovny Azure Service Bus JMS.
Pomocí Azure Portal je možné vytvořit pouze trvalá předplatná.
Sdílená odolná předplatná
Sdílený trvalý odběr se používá, když všechny zprávy publikované v tématu mají být přijaty a zpracovány aplikací, bez ohledu na to, zda aplikace neustále aktivně využívá z odběru.
Jakákoli aplikace, která je ověřená pro příjem ze služby Service Bus, může přijímat ze sdíleného trvalého předplatného.
Pokud chcete vytvořit sdílené trvalé předplatné, použijte následující metody ve JMSContext
třídě :
JMSConsumer createSharedDurableConsumer(Topic topic, String name)
JMSConsumer createSharedDurableConsumer(Topic topic, String name, String messageSelector)
Sdílené trvalé předplatné bude dál existovat, dokud se nevymaže pomocí unsubscribe
metody ve JMSContext
třídě .
void unsubscribe(String name)
Nesdílené trvalé předplatná
Podobně jako u sdíleného trvalého odběru se nesdílený trvalý odběr používá, když všechny zprávy publikované v tématu mají být přijaty a zpracovány aplikací, bez ohledu na to, zda aplikace aktivně využívá odběr.
Vzhledem k tomu, že se jedná o nesdílené předplatné, může z něj přijímat pouze aplikace, která předplatné vytvořila.
Pokud chcete vytvořit nesdílené trvalé předplatné, použijte následující metody z JMSContext
třídy :
JMSConsumer createDurableConsumer(Topic topic, String name)
JMSConsumer createDurableConsumer(Topic topic, String name, String messageSelector, boolean noLocal)
Poznámka
Tato noLocal
funkce není aktuálně podporována a ignorována.
Trvalé nesdílené předplatné bude dál existovat, pokud se neodstraní pomocí unsubscribe
metody ve JMSContext
třídě .
void unsubscribe(String name)
Sdílená trvalá předplatná
Sdílené trvalé předplatné se používá v případě, že více klientských aplikací potřebuje přijímat a zpracovávat zprávy z jednoho předplatného, pouze do doby, než je aktivně využívají nebo z něj přijímají.
Vzhledem k tomu, že předplatné není trvalé, není trvalé. Toto předplatné nepřijímá zprávy, pokud v něm nejsou žádní aktivní příjemci.
Pokud chcete vytvořit sdílené trvalé předplatné, vytvořte z JMSContext
třídy metodu JmsConsumer
, jak je znázorněno v následujících metodách :
JMSConsumer createSharedConsumer(Topic topic, String sharedSubscriptionName)
JMSConsumer createSharedConsumer(Topic topic, String sharedSubscriptionName, String messageSelector)
Sdílené předplatné, které není trvalé, bude dál existovat, dokud nebudou aktivní příjemci, kteří ho budou dostávat.
Nesdílená předplatná, která nejsou trvalá
Nesdílené předplatné se používá v případě, že klientská aplikace potřebuje přijímat a zpracovávat zprávy z předplatného, pouze do doby, než je aktivně využívá. V tomto předplatném může existovat pouze jeden příjemce, to znamená klient, který předplatné vytvořil.
Vzhledem k tomu, že předplatné není trvalé, není trvalé. Toto předplatné nepřijímá zprávy, pokud v něm není aktivní příjemce.
Pokud chcete vytvořit nesdílené trvalé předplatné, vytvořte JMSConsumer
z JMSContext
třídy , jak je znázorněno v následujících metodách :
JMSConsumer createConsumer(Destination destination)
JMSConsumer createConsumer(Destination destination, String messageSelector)
JMSConsumer createConsumer(Destination destination, String messageSelector, boolean noLocal)
Poznámka
Tato noLocal
funkce není aktuálně podporována a ignorována.
Nesdílené předplatné bude dál existovat, dokud nebude aktivní příjemce, který ho bude přijímat.
Selektory zpráv
Stejně jako filtry a akce existují u běžných odběrů služby Service Bus, i pro předplatná JMS existují selektory zpráv .
Selektory zpráv lze nastavit u každého z odběrů JMS a existují jako podmínka filtru ve vlastnostech záhlaví zprávy. Doručují se pouze zprávy s vlastnostmi záhlaví odpovídajícími výrazu selektoru zpráv. Hodnota null nebo prázdný řetězec označuje, že pro předplatné nebo příjemce JMS neexistuje žádný selektor zpráv.
Další koncepty odběrů služby Java Message Service (JMS) 2.0
Rozsah klienta
Předplatná, jak je uvedeno v rozhraní JAVA Message Service (JMS) 2.0 API, můžou, ale nemusí být vymezená na konkrétní klientské aplikace (označené příslušnými clientId
).
Jakmile je předplatné vymezeno, je k němu možné přistupovat pouze z klientských aplikací, které mají stejné ID klienta.
Všechny pokusy o přístup k předplatnému s oborem určitého ID klienta (například clientId1) z aplikace, která má jiné ID klienta (například clientId2), povedou k vytvoření dalšího předplatného vymezeného na jiné ID klienta (clientId2).
Poznámka
ID klienta může být null nebo prázdné, ale musí odpovídat ID klienta nastavenému v klientské aplikaci JMS. Z Azure Service Bus perspektivy se ID klienta s hodnotou null a prázdné ID klienta chová stejně.
Pokud je ID klienta nastavené na hodnotu null nebo prázdné, je přístupné pouze klientským aplikacím, jejichž ID klienta je také nastaveno na hodnotu null nebo prázdné.
Možnosti sdílení
Sdílené odběry umožňují více klientům/příjemcům (tj. objektů JMSConsumer) přijímat od nich zprávy.
Poznámka
Ke sdíleným předplatným vymezeným na konkrétní ID klienta může stále přistupovat více klientů/příjemců (tj. objektů JMSConsumer), ale každá klientská aplikace musí mít stejné ID klienta.
Nesdílené odběry umožňují pouze jednomu klientovi nebo příjemci (tj. objektU JMSConsumer) přijímat zprávy od nich.
JMSConsumer
Pokud se vytvoří v nesdíleném odběru, ale už má aktivní JMSConsumer
naslouchání zpráv, JMSException
vyvolá se chyba .
Stálost
Trvalé odběry jsou trvalé a nadále shromažďují zprávy z tématu, bez ohledu na to, jestli aplikace (JMSConsumer
) zprávy z tohoto tématu využívá.
Odběry , které nejsou trvalé a shromažďují zprávy z tématu, dokud aplikace (JMSConsumer
) z tématu zprávy z tématu spotřebovává.
Reprezentace předplatných s vymezeným klientem
Vzhledem k tomu, že předplatná JMS s oborem klienta (JMS) musí existovat současně s existujícími předplatnými, způsob znázornění předplatných s oborem klienta (JMS) se řídí následujícím formátem.
- <SUBSCRIPTION-NAME>$<CLIENT-ID>$D (pro trvalá předplatná)
- <SUBSCRIPTION-NAME>$<CLIENT-ID>$ND (pro předplatná, která nejsou trvalá)
$ Tady je oddělovač.
Další kroky
Další informace a příklady použití zasílání zpráv služby Service Bus najdete v následujících pokročilých tématech: