Příručka pro vývojáře Azure Service Bus JMS 2.0
Tato příručka obsahuje podrobné informace, které vám pomůžou úspěšně komunikovat se službou Azure Service Bus pomocí rozhraní API JMS (Java Message Service) 2.0.
Pokud s Azure Service Bus začínáte jako vývojář v Javě, zvažte čtení následujících článků.
Začínáme | Koncepty |
---|---|
Programovací model JMS (Java Message Service)
Programovací model rozhraní API služby Java Message Service je znázorněný v následujících částech:
Poznámka:
Úroveň Azure Service Bus Premium podporuje JMS 1.1 a JMS 2.0.
Azure Service Bus – Úroveň Standard podporuje omezené funkce JMS 1.1. Další podrobnosti najdete v této dokumentaci.
JMS – Stavební bloky
Následující stavební bloky jsou k dispozici pro komunikaci s aplikací JMS.
Poznámka:
Následující příručka byla upravena z kurzu Oracle Java EE 6 pro Službu zpráv Java (JMS)
Odkazování na tento kurz se doporučuje pro lepší pochopení služby Java Message Service (JMS).
objekt pro vytváření Připojení ionů
Objekt objektu objektu pro vytváření připojení používá klient pro připojení k poskytovateli JMS. Objekt pro vytváření připojení zapouzdřuje sadu parametrů konfigurace připojení, které definuje správce.
Každá továrna připojení je instance ConnectionFactory
, QueueConnectionFactory
nebo TopicConnectionFactory
rozhraní.
Pro zjednodušení připojení pomocí služby Azure Service Bus se tato rozhraní implementují prostřednictvím ServiceBusJmsConnectionFactory
, ServiceBusJmsQueueConnectionFactory
nebo ServiceBusJmsTopicConnectionFactory
v uvedeném pořadí.
Důležité
Aplikace v Javě využívající rozhraní API JMS 2.0 se můžou připojit ke službě Azure Service Bus pomocí připojovací řetězec nebo využít TokenCredential
ověřování založené na Microsoft Entra. Při použití ověřování založeného na Microsoft Entra nezapomeňte podle potřeby přiřadit k identitě role a oprávnění .
- Spravovaná identita přiřazená systémem
- Spravovaná identita přiřazená uživatelem
- Instanční objekt
- ověřování řetězců Připojení ionu
Vytvořte spravovanou identitu přiřazenou systémem v Azure a pomocí této identity vytvořte TokenCredential
.
TokenCredential tokenCredential = new DefaultAzureCredentialBuilder().build();
Objekt pro vytváření Připojení ion je pak možné vytvořit instanci s následujícími parametry.
- Přihlašovací údaje tokenu – Představuje přihlašovací údaje schopné poskytnout token OAuth.
- Hostitel – název hostitele oboru názvů úrovně Premium služby Azure Service Bus.
- ServiceBusJms Připojení ionFactory Nastavení taška vlastností, která obsahuje
- connectionIdleTimeoutMS – časový limit nečinných připojení v milisekundách
- traceFrames – logický příznak pro shromažďování trasovacích rámců AMQP pro ladění.
- další parametry konfigurace
Továrnu je možné vytvořit, jak je znázorněno zde. Přihlašovací údaje tokenu a hostitel jsou povinné parametry, ale ostatní vlastnosti jsou volitelné.
String host = "<YourNamespaceName>.servicebus.windows.net";
ConnectionFactory factory = new ServiceBusJmsConnectionFactory(tokenCredential, host, null);
Cíl JMS
Cílem je objekt, který klient používá k určení cíle zpráv, které vytváří, a zdroje zpráv, které využívá.
Cíle se mapují na entity ve službě Azure Service Bus – fronty (v bodových scénářích) a témata (ve scénářích pub-sub).
Propojení
Připojení zapouzdřuje virtuální připojení s poskytovatelem JMS. Se službou Azure Service Bus představuje stavové připojení mezi aplikací a službou Azure Service Bus přes AMQP.
Připojení se vytvoří z objektu pro vytváření připojení, jak je znázorněno v následujícím příkladu:
Connection connection = factory.createConnection();
Přednášky
Relace je kontext s jedním vláknem pro vytváření a využívání zpráv. Lze ji využít k vytváření zpráv, producentů zpráv a příjemců, ale také poskytuje transakční kontext, který umožňuje seskupení odesílaných a přijatých zpráv do atomické jednotky práce.
Relaci lze vytvořit z objektu připojení, jak je znázorněno v následujícím příkladu:
Session session = connection.createSession(false, Session.CLIENT_ACKNOWLEDGE);
Poznámka:
Rozhraní JMS API nepodporuje příjem zpráv z front služby Service Bus ani témat s povolenými relacemi zasílání zpráv.
Režimy relací
Relaci je možné vytvořit s některým z následujících režimů.
Režimy relací | Chování |
---|---|
Session.AUTO_ACKNOWLEDGE | Relace automaticky potvrdí přijetí zprávy klienta, a to buď v případech, kdy se relace úspěšně vrátila z volání, které přijme, nebo když relace naslouchací proces volala, aby se zpráva úspěšně vrátila. |
Session.CLIENT_ACKNOWLEDGE | Klient potvrdí spotřebovanou zprávu voláním metody potvrzení zprávy. |
Session.DUPS_OK_ACKNOWLEDGE | Tento režim potvrzení dává relaci pokyn, aby lazily potvrdit doručení zpráv. |
Session.SESSION_TRANSACTED | Tato hodnota může být předána jako argument metodě createSession(int sessionMode) v Připojení ion objektu určit, že relace by měla používat místní transakce. |
Pokud není zadaný režim relace, ve výchozím nastavení se vybere Session.AUTO_ACKNOWLEDGE .
JMSContext
Poznámka:
JMSContext je definován jako součást specifikace JMS 2.0.
JMSContext kombinuje funkce poskytované objektem připojení a relace. Lze ji vytvořit z objektu objektu objektu pro vytváření připojení.
JMSContext context = connectionFactory.createContext();
Režimy JMSContext
Stejně jako objekt Session lze JMSContext vytvořit se stejnými režimy potvrzení jako v režimu relace.
JMSContext context = connectionFactory.createContext(JMSContext.AUTO_ACKNOWLEDGE);
Pokud není zadaný režim, JMSContext.AUTO_ACKNOWLEDGE se ve výchozím nastavení vybere.
Producenti zpráv JMS
Producent zprávy je objekt, který je vytvořen pomocí JMSContext nebo Relace a používá se k odesílání zpráv do cíle.
Lze ho vytvořit buď jako samostatný objekt, jak je znázorněno v následujícím příkladu:
JMSProducer producer = context.createProducer();
Nebo se vytvoří za běhu, když je potřeba odeslat zprávu.
context.createProducer().send(destination, message);
Příjemci zpráv JMS
Příjemce zprávy je objekt, který je vytvořen JMSContext nebo Relace a používá se pro příjem zpráv odesílaných do cíle. Dá se vytvořit, jak je znázorněno v tomto příkladu:
JMSConsumer consumer = context.createConsumer(dest);
Synchronní příjem prostřednictvím metody receive()
Příjemce zprávy poskytuje synchronní způsob, jak přijímat zprávy z cíle prostřednictvím receive()
metody.
Pokud nejsou zadány žádné argumenty a časový limit 0 nebo je zadán časový limit 0, bude příjemce blokovaný po neomezenou dobu, pokud zpráva nedorazí nebo připojení není přerušeno (podle toho, co je dříve).
Message m = consumer.receive();
Message m = consumer.receive(0);
Pokud je zadaný nenulový kladný argument, příjemce do vypršení platnosti časovače zablokuje.
Message m = consumer.receive(1000); // time out after one second.
Asynchronní příjem pomocí naslouchacích procesů zpráv JMS
Naslouchací proces zprávy je objekt, který slouží k asynchronnímu zpracování zpráv v cíli. Implementuje MessageListener
rozhraní, které obsahuje metodu onMessage
, ve které musí existovat konkrétní obchodní logika.
Objekt naslouchacího procesu zprávy musí být vytvořena a registrována u konkrétního příjemce zprávy pomocí setMessageListener
metody.
Listener myListener = new Listener();
consumer.setMessageListener(myListener);
Využívání z témat
Příjemci zpráv JMS se vytvářejí v cílovém umístění, což může být fronta nebo téma.
Příjemci ve frontách jsou jednoduše objekty na straně klienta, které se nacházejí v kontextu relace (a Připojení ion) mezi klientskou aplikací a službou Azure Service Bus.
Spotřebitelé na témata však mají 2 části -
- Objekt na straně klienta, který se nachází v kontextu Relace (nebo JMSContext) a,
- Předplatné, které je entitou ve službě Azure Service Bus.
Předplatná jsou zde zdokumentovaná a můžou se jednat o jednu z následujících možností:
- Sdílená odolná předplatná
- Sdílená non-durable předplatná
- Zrušení sdílení trvalých předplatných
- Nesdílené non-durable předplatná
Prohlížeče front JMS
Rozhraní JMS API poskytuje QueueBrowser
objekt, který aplikaci umožňuje procházet zprávy ve frontě a zobrazovat hodnoty záhlaví pro každou zprávu.
Prohlížeč front lze vytvořit pomocí JMSContext jako v následujícím příkladu:
QueueBrowser browser = context.createBrowser(queue);
Poznámka:
Rozhraní API JMS neposkytuje rozhraní API pro procházení tématu.
Je to proto, že samotné téma zprávy neukládá. Jakmile se zpráva odešle do tématu, přepošle se do příslušných odběrů.
Selektory zpráv JMS
Selektory zpráv mohou být použity příjmem aplikací k filtrování přijatých zpráv. Při selektorech zpráv se přijímající aplikace přesměruje práci filtrování zpráv na poskytovatele JMS (v tomto případě Azure Service Bus) místo samotné odpovědnosti.
Selektory je možné využít při vytváření některého z následujících příjemců –
- Sdílené trvalé předplatné
- Zrušení sdílení odolného předplatného
- Sdílené non-durable předplatné
- Nesdílené non-durable předplatné
- Prohlížeč front
AMQP disposition and Service Bus operation mapping
Tady je postup, jak se dispozice AMQP překládá na operaci Service Bus:
ACCEPTED = 1; -> Complete()
REJECTED = 2; -> DeadLetter()
RELEASED = 3; (just unlock the message in service bus, will then get redelivered)
MODIFIED_FAILED = 4; -> Abandon() which increases delivery count
MODIFIED_FAILED_UNDELIVERABLE = 5; -> Defer()
Shrnutí
Tato příručka pro vývojáře předvádí, jak se klientské aplikace v Javě používající JMS (Java Message Service) můžou připojit pomocí služby Azure Service Bus.
Další kroky
Další informace o entitách služby Java Message Service (JMS) najdete v následujících článcích:
- Service Bus – fronty, témata a odběry
- Service Bus – Entity služby zpráv Java
- Podpora AMQP 1.0 ve službě Azure Service Bus
- Příručka pro vývojáře service Bus AMQP 1.0
- Začínáme s frontami služby Service Bus
- Rozhraní API služby Java Message Service (externí dokumentace Oracle)
- Zjistěte, jak migrovat z ActiveMQ na Service Bus.