Poznámka
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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 | Koncepce |
---|---|
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).
Továrna pro připojení
Objekt továrny 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ě, které využívají rozhraní API JMS 2.0, se můžou připojit ke službě Azure Service Bus pomocí připojovacího řetězce 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
- Hlavní služba
- Ověřování připojovacího řetězce
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í 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.
- ServiceBusJmsConnectionFactorySettings – taška vlastností, která obsahuje
- connectionIdleTimeoutMS – časový limit nečinných připojení v milisekundách
- traceFrames – logický příznak, který umožňuje shromažďovat AMQP trasovací rámce 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);
Destinace 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).
Připojení
Připojení zapouzdřuje virtuální spojení 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();
Zasedání
Relace je jednovláknový kontext 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 nebo témat služby Service Bus s povolenými relacemi zasílání zpráv.
Režimy relací
Je možné vytvořit relaci 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 klientem buď ve chvíli, kdy se relace úspěšně vrátí z volání metody receive, nebo když posluchač zpráv, kterého relace zavolala pro zpracování zprávy, se úspěšně vrátí. |
Session.CLIENT_ACKNOWLEDGE | Klient potvrdí spotřebovanou zprávu voláním metody potvrzení zprávy. |
Session.DUPS_OK_ACKNOWLEDGE | Tento režim potvrzení instruuje relaci, aby neochotně potvrdila doručení zpráv. |
Session.SESSION_TRANSACTED | Tato hodnota může být předána jako argument metodě createSession(int sessionMode) u objektu Connection k určení, že relace by měla používat místní transakci. |
Pokud není zadaný režim relace, Session.AUTO_ACKNOWLEDGE se ve výchozím nastavení vybere.
JMSContext
Poznámka:
JMSContext je definován jako součást specifikace JMS 2.0.
JMSContext kombinuje funkce poskytované objektem připojení a objektem relace. Lze ji vytvořit z objektu továrny na 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, ve výchozím nastavení se vybere JMSContext.AUTO_ACKNOWLEDGE .
Producenti zpráv JMS
Producent zprávy je objekt, který je vytvořen pomocí JMSContext nebo Sezení a používá se k odesílání zpráv do cílového místa.
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 pomocí 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 nebo je zadán časový limit 0, bude příjemce blokován na neurčito, dokud nepřijde zpráva nebo dokud nebude přerušeno připojení (podle toho, co nastane 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řijímání s posluchači zpráv JMS
Zařízení pro naslouchání zpráv je objekt, který se používá pro asynchronní zpracování zpráv na určitém místě. 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řen a registrován u konkrétního příjemce zprávy pomocí metody setMessageListener
.
Listener myListener = new Listener();
consumer.setMessageListener(myListener);
Spotřebovávání témat
Příjemci zpráv JMS jsou vytvářeni pro cíl, kterým 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í) mezi klientskou aplikací a službou Azure Service Bus.
Spotřebitelé mají na tato témata ovšem dva názory.
- Objekt na straně klienta, který existuje 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á dočasná předplatná
- Zrušení sdílení trvalých předplatných
- Nesdílené neodolné 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 prostředky pro prohlížení tématu.
Je to proto, že samotné téma zprávy neukládá. Jakmile se zpráva odešle na název tématu, je předána příslušným odběratelům.
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é
- Nesdílené odolné předplatné
- Sdílené nedlouhodobé předplatné
- Nesdílené krátkodobé předplatné
- Příjemce fronty
- Prohlížeč front
Poznámka:
Selektory služby Service Bus nepodporují klíčová slova LIKE a BETWEEN SQL.
Mapování dispozice AMQP a operací Service Bus
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 Azure Service Bus a entitách služby Java Message Service (JMS) najdete v následujících článcích:
- Service Bus – fronty, témata a subskripce
- 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.