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, QueueConnectionFactorynebo TopicConnectionFactory rozhraní.

Pro zjednodušení připojení pomocí služby Azure Service Bus se tato rozhraní implementují prostřednictvím ServiceBusJmsConnectionFactory, ServiceBusJmsQueueConnectionFactorynebo 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í .

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: