Az Azure Service Bus JMS 2.0 fejlesztői útmutatója
Ez az útmutató részletes információkat tartalmaz az Azure Service Bus és a Java Message Service (JMS) 2.0 API használatával történő sikeres kommunikációhoz.
Java-fejlesztőként, ha még nem ismerkedik az Azure Service Bus szolgáltatással, érdemes elolvasnia a következő cikkeket.
Első lépések | Fogalmak |
---|---|
Java Message Service (JMS) programozási modell
A Java Message Service API programozási modellje az alábbi szakaszokban látható:
Feljegyzés
Az Azure Service Bus Premium szint támogatja a JMS 1.1-et és a JMS 2.0-t.
Az Azure Service Bus – Standard szint támogatja a JMS 1.1 korlátozott funkcióit. További részletekért tekintse meg ezt a dokumentációt.
JMS – Építőelemek
Az alábbi építőelemek a JMS-alkalmazással való kommunikációhoz érhetők el.
Feljegyzés
Az alábbi útmutató az Oracle Java Enterprise kiadás 6 Java Message Service (JMS) oktatóanyagából lett adaptálva
Az oktatóanyagra való hivatkozás a Java Message Service (JMS) jobb megértéséhez ajánlott.
Csatlakozás ion factory
A kapcsolat-előállító objektumot az ügyfél használja a JMS-szolgáltatóhoz való csatlakozáshoz. A kapcsolat-előállító a rendszergazda által definiált kapcsolatkonfigurációs paraméterek készletét foglalja magában.
Minden kapcsolat-előállító az , QueueConnectionFactory
vagy TopicConnectionFactory
interfész egy példányaConnectionFactory
.
Az Azure Service Bushoz való csatlakozás egyszerűsítése érdekében ezeket az interfészeket a rendszer az , ServiceBusJmsQueueConnectionFactory
vagy ServiceBusJmsTopicConnectionFactory
annak megfelelően valósítja megServiceBusJmsConnectionFactory
.
Fontos
A JMS 2.0 API-t használó Java-alkalmazások a kapcsolati sztring vagy a Microsoft Entra által támogatott hitelesítés használatával TokenCredential
csatlakozhatnak az Azure Service Bushoz. A Microsoft Entra által támogatott hitelesítés használatakor győződjön meg arról, hogy szükség esetén szerepköröket és engedélyeket rendel az identitáshoz.
- Rendszer által hozzárendelt felügyelt identitás
- Felhasználó által hozzárendelt felügyelt identitás
- Szolgáltatásnév
- Csatlakozás ion-sztring hitelesítése
Hozzon létre egy rendszer által hozzárendelt felügyelt identitást az Azure-ban, és ezzel az identitással hozzon létre egy TokenCredential
.
TokenCredential tokenCredential = new DefaultAzureCredentialBuilder().build();
A Csatlakozás ion-előállító ezután az alábbi paraméterekkel hozható létre.
- Jogkivonat hitelesítő adatai – OAuth-jogkivonat megadására alkalmas hitelesítő adatokat jelöl.
- Gazdagép – az Azure Service Bus Premium szintű névtér gazdagépneve.
- ServiceBusJms Csatlakozás ionFactory Gépház tulajdonságcsomag, amely
- connectionIdleTimeoutMS – tétlen kapcsolat időtúllépése ezredmásodpercben.
- traceFrames – logikai jelző az AMQP nyomkövetési kereteinek a hibakereséshez való gyűjtéséhez.
- egyéb konfigurációs paraméterek
A gyár az itt látható módon hozható létre. A jogkivonat hitelesítő adatai és gazdagépe kötelező paraméterek, a többi tulajdonság azonban nem kötelező.
String host = "<YourNamespaceName>.servicebus.windows.net";
ConnectionFactory factory = new ServiceBusJmsConnectionFactory(tokenCredential, host, null);
JMS-cél
A cél az az objektum, amelyet az ügyfél az általa előállított üzenetek célhelyének és a felhasznált üzenetek forrásának megadására használ.
A célhelyek az Azure Service Bus entitásaihoz lesznek leképezve – üzenetsorok (pont–pont forgatókönyvek) és témakörök (pub-alforgatókönyvekben).
Kapcsolatok
A kapcsolat virtuális kapcsolatot foglal magában egy JMS-szolgáltatóval. Az Azure Service Bus használatával állapotalapú kapcsolatot jelent az alkalmazás és az Azure Service Bus között az AMQP-n keresztül.
A kapcsolat a kapcsolat-előállítóból jön létre az alábbi példában látható módon:
Connection connection = factory.createConnection();
Előadások
A munkamenetek egyszálas környezetek az üzenetek előállításához és felhasználásához. Felhasználható üzenetek, üzenetkészítők és -fogyasztók létrehozására, de tranzakciós környezetet is biztosít a küldések és fogadások atomi munkaegységbe való csoportosításának engedélyezéséhez.
A kapcsolatobjektumból munkamenet hozható létre az alábbi példában látható módon:
Session session = connection.createSession(false, Session.CLIENT_ACKNOWLEDGE);
Feljegyzés
A JMS API nem támogatja a Service Bus-üzenetsorokból vagy témakörökből érkező üzenetek fogadását, ha engedélyezve van az üzenetkezelési munkamenet.
Munkamenet-üzemmódok
Az alábbi módok bármelyikével létrehozhat munkamenetet.
Munkamenet-üzemmódok | Működés |
---|---|
Session.AUTO_ACKNOWLEDGE | A munkamenet automatikusan nyugtázza az ügyfél üzenetének fogadását, ha a munkamenet sikeresen vissza lett adva egy fogadási hívásból, vagy amikor a munkamenetet figyelő üzenetfigyelő meghívta az üzenet sikeres feldolgozására. |
Session.CLIENT_ACKNOWLEDGE | Az ügyfél az üzenet nyugtázási metódusának meghívásával nyugtáz egy felhasznált üzenetet. |
Session.DUPS_OK_ACKNOWLEDGE | Ez a nyugtázási mód arra utasítja a munkamenetet, hogy lazán nyugtázza az üzenetek kézbesítését. |
Munkamenet. Standard kiadás SSION_TRANSACTED | Ez az érték átadható argumentumként a createSession(int sessionMode) metódusnak a Csatlakozás ion objektumon annak megadásához, hogy a munkamenetnek helyi tranzakciót kell használnia. |
Ha nincs megadva a munkamenet mód, a rendszer alapértelmezés szerint kiválasztja a Session.AUTO_ACKNOWLEDGE .
JMSContext
Feljegyzés
A JMSContext a JMS 2.0 specifikáció részeként van definiálva.
A JMSContext egyesíti a kapcsolat és a munkamenet-objektum által biztosított funkciókat. A kapcsolat-előállító objektumból hozható létre.
JMSContext context = connectionFactory.createContext();
JMSContext módok
A Munkamenet objektumhoz hasonlóan a JMSContext is létrehozható ugyanazokkal a nyugtázási módokkal, mint a Munkamenet módban.
JMSContext context = connectionFactory.createContext(JMSContext.AUTO_ACKNOWLEDGE);
Ha nincs megadva a mód, a rendszer alapértelmezés szerint kiválasztja a JMSContext.AUTO_ACKNOWLEDGE .
JMS-üzenetkészítők
Az üzenetkészítő egy JMSContext vagy munkamenet használatával létrehozott objektum, amely üzenetek célhelyre küldésére szolgál.
Önálló objektumként is létrehozható, ahogyan az alábbi példában látható:
JMSProducer producer = context.createProducer();
Vagy futásidőben jön létre, amikor üzenetet kell küldeni.
context.createProducer().send(destination, message);
JMS-üzenetfelhasználók
Az üzenetfelhasználó egy JMSContext vagy munkamenet által létrehozott objektum, amely egy célhelyre küldött üzenetek fogadására szolgál. Az alábbi példában látható módon hozható létre:
JMSConsumer consumer = context.createConsumer(dest);
Szinkron fogadás fogadása fogadási() módszerrel
Az üzenetfelhasználó szinkron módon fogad üzeneteket a célhelyről a receive()
metóduson keresztül.
Ha nincs megadva argumentum/időtúllépés, vagy a "0" időtúllépés van megadva, akkor a fogyasztó határozatlan időre letiltja, kivéve, ha az üzenet érkezik, vagy a kapcsolat megszakadt (amelyik korábbi).
Message m = consumer.receive();
Message m = consumer.receive(0);
Ha nem nulla pozitív argumentumot ad meg, a fogyasztó letiltja, amíg az időzítő le nem jár.
Message m = consumer.receive(1000); // time out after one second.
Aszinkron fogadás JMS-üzenetfigyelőkkel
Az üzenetfigyelő egy objektum, amely a célhelyen lévő üzenetek aszinkron kezelésére szolgál. Implementálja az MessageListener
interfészt, amely azt a onMessage
módszert tartalmazza, amelyben az adott üzleti logikának élnie kell.
Az üzenetfigyelő objektumokat példányosítva és regisztrálva kell lenniük egy adott üzenetfelhasználón a setMessageListener
metódus használatával.
Listener myListener = new Listener();
consumer.setMessageListener(myListener);
Felhasználás témakörökből
A JMS-üzenetfogyasztók egy célhelyen jönnek létre, amely lehet üzenetsor vagy témakör.
Az üzenetsorok felhasználói egyszerűen ügyféloldali objektumok, amelyek az ügyfélalkalmazás és az Azure Service Bus közötti munkamenet (és Csatlakozás ion) kontextusában élnek.
A témák fogyasztóinak azonban 2 részük van -
- Egy ügyféloldali objektum , amely a Munkamenet(vagy JMSContext) környezetében található, és
- Olyan előfizetés , amely az Azure Service Bus egy entitása.
Az előfizetéseket itt dokumentáljuk, és az alábbiak egyike lehet:
- Megosztott tartós előfizetések
- Megosztott, nem tartós előfizetések
- Nem tagolt tartós előfizetések
- Nem tagolt, nem tartós előfizetések
JMS Queue Browsers
A JMS API egy QueueBrowser
objektumot biztosít, amellyel az alkalmazás tallózhat az üzenetsor üzenetei között, és megjelenítheti az egyes üzenetek fejlécértékeit.
A Queue Browser a JMSContext használatával hozható létre, ahogyan az alábbi példában is látható:
QueueBrowser browser = context.createBrowser(queue);
Feljegyzés
A JMS API nem biztosít API-t egy témakör tallózásához.
Ennek az az oka, hogy maga a témakör nem tárolja az üzeneteket. Amint az üzenet el lesz küldve a témakörbe, a rendszer a megfelelő előfizetésekbe továbbítja azt.
JMS-üzenetválasztók
Az üzenetválasztók alkalmazásokat fogadva szűrhetik a fogadott üzeneteket. Az üzenetválasztókkal a fogadó alkalmazás az üzenetek JMS-szolgáltatóra (ebben az esetben az Azure Service Busra) való szűrési feladatát végzi, nem pedig magát a felelősséget.
A választók az alábbi felhasználók bármelyikének létrehozásakor használhatók :
- Megosztott tartós előfizetés
- Nem tagolt tartós előfizetés
- Megosztott, nem tartós előfizetés
- Nem tagolt, nem tartós előfizetés
- Üzenetsor-böngésző
AMQP-diszpozíció és Service Bus-műveletleképezés
Az AMQP-diszpozíció a következőképpen fordítható le Service Bus-műveletre:
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()
Összegzés
Ez a fejlesztői útmutató bemutatja, hogy a Java Message Service-t (JMS) használó Java-ügyfélalkalmazások hogyan tudnak csatlakozni az Azure Service Bushoz.
Következő lépések
Az Azure Service Busról és a Java Message Service(JMS)-entitásokról az alábbi cikkekben talál további információt:
- Service Bus – Üzenetsorok, témakörök és előfizetések
- Service Bus – Java Message Service-entitások
- AMQP 1.0-támogatás az Azure Service Busban
- Service Bus AMQP 1.0 fejlesztői útmutató
- Bevezetés a Service Bus által kezelt üzenetsorok használatába
- Java Message Service API (külső Oracle-dokumentum)
- Ismerje meg, hogyan migrálhat az ActiveMQ-ról a Service Busra