Mi az Azure Service Bus?

Az Azure Service Bus egy teljes körűen felügyelt vállalati üzenetközvetítő üzenetsorokkal és közzétételi-feliratkozási témakörökkel (névtérben). A Service Bus alkalmazásokat és szolgáltatásokat különít el egymástól, és a következő előnyöket nyújtja:

  • Terheléselosztási munka a versengő feldolgozók között
  • Biztonságos útválasztás és adatátvitel, valamint vezérlés a szolgáltatás- és alkalmazáshatárokon
  • Magas szintű megbízhatóságot igénylő tranzakciós munka koordinálása

Megjegyzés

Az Azure üzenetkezelési szolgáltatásainak összehasonlításáért tekintse meg az Azure üzenetkezelési szolgáltatások – Event Grid, Event Hubs és Service Bus – közötti választást.

Áttekintés

Az adatok különböző alkalmazások és szolgáltatások közötti átvitele az üzenetek segítségével történik. Az üzenetek metaadatokkal díszített tárolók, és adatokat tartalmaznak. Az adatok bármilyen információ lehetnek, beleértve a gyakori formátumokkal kódolt strukturált adatokat is, például a következő formátumokat: JSON, XML, Apache Avro, Egyszerű szöveg.

Néhány gyakori üzenetküldési forgatókönyv:

  • Üzenetkezelés. Üzleti adatok, például értékesítési vagy beszerzési rendelések, naplók vagy készletmozgások átvitele.

  • Alkalmazások leválasztása. Az alkalmazások és szolgáltatások megbízhatóságának és méretezhetőségének javítása. A gyártónak és a fogyasztónak nem kell egyszerre online vagy könnyen elérhetőnek lennie. A terhelés simításának célja , hogy a kiugró forgalom ne terhelje túl a szolgáltatást.

  • Terheléselosztás. Lehetővé teszi, hogy egyszerre több versengő felhasználó olvashasson egy üzenetsorból, és mindegyik biztonságosan kizárólagos tulajdonjogot szerezzen bizonyos üzenetekhez.

  • Témakörök és előfizetések. Engedélyezze az 1:n kapcsolatokat a közzétevők és az előfizetők között, így az előfizetők kiválaszthat bizonyos üzeneteket egy közzétett üzenetstreamből.

  • Tranzakciók. Lehetővé teszi, hogy több műveletet is elvégezz, mindezt egy atomi tranzakció hatókörében. Az alábbi műveletek például egy tranzakció hatókörében végezhetők el.

    1. Üzenet lekérése egy üzenetsorból.
    2. A feldolgozás eredményeinek közzététele egy vagy több különböző üzenetsorba.
    3. A bemeneti üzenet áthelyezése az eredeti üzenetsorból.

    Az eredmények csak a sikeres feldolgozást követően válnak láthatóvá az alsóbb rétegbeli fogyasztók számára, beleértve a bemeneti üzenetek sikeres rendezését is, ami lehetővé teszi a szemantika egyszeri feldolgozását. Ez a tranzakciós modell robusztus alapot biztosít a kompenzáló tranzakciók mintájának a nagyobb megoldáskörnyezetben.

  • Üzenet-munkamenetek. Nagy léptékű koordinációt valósíthat meg olyan munkafolyamatok és többszörös átvitelek esetében, amelyek szigorú üzenetrendezést vagy üzenet halasztást igényelnek.

Ha ismeri a többi üzenetközvetítőt, például az Apache ActiveMQ-t, a Service Bus fogalmai hasonlóak ahhoz, amit tud. Mivel a Service Bus egy szolgáltatásként nyújtott platform (PaaS) ajánlat, a legfontosabb különbség az, hogy nem kell aggódnia a következő műveletek miatt. Az Azure gondoskodik ezekről a házimunkákról.

  • Hardverhibák miatti aggodalom
  • Az operációs rendszerek vagy a termékek javítása
  • Naplók elhelyezése és lemezterület kezelése
  • Biztonsági másolatok kezelése
  • Feladatátvétel egy tartalék gépre

Alapelvek

Ez a szakasz a Service Bus alapfogalmait ismerteti.

Üzenetsorok

Az üzenetek az üzenetsorokba érkeznek be, és onnan küldi ki őket a rendszer. Az üzenetsorok addig tárolják az üzeneteket, amíg a fogadó alkalmazás elérhetővé nem válik a fogadásukhoz és a feldolgozásukhoz.

Queue

Az üzenetsorokban lévő üzenetek sorrendje és időbélyege érkezéskor történik. Miután elfogadta a közvetítő, az üzenet mindig tartósan a tripla redundáns tárolóban lesz tárolva, és a rendelkezésre állási zónák között oszlik el, ha a névtér engedélyezve van. A Service Bus soha nem hagyja az üzeneteket a memóriában vagy az ideiglenes tárolóban, miután azokat az ügyfélnek elfogadottként jelentették.

Az üzenetek lekéréses módban érkeznek, csak kérés esetén. Más felhőbeli üzenetsorok foglalt lekérdezési modelljével ellentétben a lekérési művelet hosszú élettartamú lehet, és csak akkor fejeződhet be, ha egy üzenet elérhetővé válik.

Megjegyzés

A Service Bus-üzenetsorok és a Storage-üzenetsorok összehasonlításáért tekintse meg a Storage-üzenetsorokat és a Service Bus-üzenetsorokat – összehasonlítva és összehasonlítva.

Témakörök

Az üzenetek küldéséhez és fogadásához témaköröket is használhat. Amíg egy üzenetsort gyakran használnak közvetlen kommunikációra, addig a témakörök hasznosak a közzétételi/előfizetési forgatókönyvekben.

Topic

A témakörök több, független előfizetéssel is rendelkezhetnek, amelyek csatolva vannak a témakörhöz, és más módon ugyanúgy működnek, mint a fogadóoldali üzenetsorok. Egy adott témakör előfizetője az adott témakörben küldött összes üzenetről kaphat másolatot. Az előfizetések nevesített entitások. Az előfizetések alapértelmezés szerint tartósak, de konfigurálhatók lejáratra, majd automatikusan törölhetők. A Java Message Service (JMS) API-n keresztül a Service Bus Premium lehetővé teszi a kapcsolat időtartama alatt létező, illékony előfizetések létrehozását is.

Az előfizetésekre vonatkozó szabályokat definiálhat. Az előfizetési szabály szűrővel rendelkezik, amely meghatározza az üzenet előfizetésbe másolandó feltételét, valamint egy választható műveletet , amely módosíthatja az üzenet metaadatait. További információ: Témakörszűrők és műveletek. Ez a funkció a következő esetekben hasznos:

  • Nem szeretné, hogy egy előfizetés megkapja a témakörbe küldött összes üzenetet.
  • Ha további metaadatokkal szeretné megjelölni az üzeneteket, amikor átmennek egy előfizetésen.

Megjegyzés

Az üzenetsorokról és témakörökről további információt a Service Bus-üzenetsorok, -témakörök és -előfizetések című témakörben talál.

Névterek

A névtér az összes üzenetkezelési összetevő (üzenetsorok és témakörök) tárolója. Több üzenetsor és témakör lehet egyetlen névtérben, és a névterek gyakran alkalmazástárolókként szolgálnak.

A névtér más közvetítők terminológiájában hasonlítható össze egy kiszolgálóval, de a fogalmak nem közvetlenül egyenértékűek. A Service Bus-névtér egy több tucat aktív virtuális gépből álló nagy fürt saját kapacitásszelete. Opcionálisan három Azure rendelkezésre állási zónára is kiterjedhet. Így az üzenetközvetítő hatalmas léptékű futtatásának minden rendelkezésre állási és robusztussági előnyét élvezheti. És nem kell aggódnia a mögöttes összetettségek miatt. A Service Bus kiszolgáló nélküli üzenetküldés.

Speciális funkciók

A Service Bus olyan speciális funkciókkal is rendelkezik, amelyek segítségével jóval összetettebb üzenetküldési problémákat is megoldhat. A következő szakaszok ezeket a funkciókat ismertetik:

Üzenet-munkamenetek

Az érkezési sorrend alapján (FIFO) törtnő feldolgozás garantálásához a Service Busban munkameneteket használhat. Az üzenet-munkamenetek lehetővé teszik a nem kötött kapcsolódó üzenetsorozatok együttes és rendezett kezelését.

Automatikus továbbítás

Az automatikus-továbbítás funkció lehetővé teszi önnek egy üzenetsor vagy előfizetés hozzákapcsolását egy szintén ugyanazon névtér részét képező másik üzenetsorhoz vagy témakörhöz. Ha az automatikus-továbbítás engedélyezve van, a Service Bus automatikusan törli azon üzeneteket, amelyek az első üzenetsorba vagy előfizetésbe (forrás) kerülnek, és áthelyezi őket a második üzenetsorba vagy témakörbe (cél).

Kézbesíthetetlen levelek

A Service Bus támogatja a kézbesíthetetlen levelek várólistáját (DLQ), hogy az egyetlen fogadóhoz sem továbbított vagy feldolgozhatatlan üzenetek tárolása is meg legyen oldva. Ezután eltávolíthatja az üzeneteket a kézbesíthetetlen levelek várólistájáról, és megvizsgálhatja azokat.

Ütemezett kézbesítés

A késleltetett feldolgozás érdekében üzeneteket küldhet egy üzenetsorba vagy témakörbe. Például ütemezzen egy feladatot, hogy elérhetővé váljon egy rendszer általi feldolgozáshoz egy adott időpontban.

Üzenetek halasztása

Ha egy üzenetsor- vagy előfizetés-ügyfél olyan üzenetet kap, amelyet hajlandó feldolgozni, de amelyek feldolgozása jelenleg nem lehetséges az alkalmazáson belüli különleges körülmények miatt, az entitás késleltetheti az üzenet lekérését egy későbbi pontra. Az üzenet az üzenetsorban vagy az előfizetésben marad, de félre van állítva.

Tranzakciók

Egy tranzakció két vagy több műveletet kapcsol össze egyetlen végrehajtási hatókörbe. A Service Bus támogatja az egyetlen üzenetküldő entitásra (üzenetsor, témakör, előfizetés) irányuló csoportosítási műveleteket egy tranzakció hatáskörén belül.

Szűrés és műveletek

Az előfizetők meghatározhatják, hogy mely üzeneteket szeretnék megkapni egy témakörön belül. Ezen üzenetek egy vagy több névvel ellátott előfizetési szabály formájában adhatók meg. Az előfizetés megfelelő szabályfeltételenként létrehoz egy üzenetmásolatot, amelyek azután megfelelő szabályonként más és más jelöléssel láthatók el.

Automatikus törlés tétlenség esetén

Az Automatikus törlés tétlenség esetén lehetővé teszi, hogy meghatározzon egy tétlenségi időtartamot, amelyet követően az üzenetsor automatikus törlődik. A rendszer alaphelyzetbe állítja az időközt, ha forgalom van az üzenetsorban. A minimális érték 5 perc.

Duplikálás észlelése

Ha olyan hiba történik, amely miatt az ügyfélnek kétségei vannak a küldési művelet eredményével kapcsolatban, a duplikálásészlelés kiveszi a kétségeket ezekből a helyzetekből azáltal, hogy lehetővé teszi a feladónak, hogy újraküldje ugyanazt az üzenetet, és az üzenetsor vagy témakör elveti az ismétlődő másolatokat.

Közös hozzáférésű jogosultságkód (SAS), szerepköralapú hozzáférés-vezérlés és felügyelt identitások

A Service Bus támogatja az olyan biztonsági protokollokat, mint a közös hozzáférésű jogosultságkód (SAS), a szerepköralapú hozzáférés-vezérlés (RBAC) és az Azure-erőforrások felügyelt identitásai.

Geo-vészhelyreállítás

Az Azure-régiók vagy adatközpontok leállása esetében a Geo-vészhelyreállítás lehetővé teszi az adatfeldolgozási művelet folytatását egy másik régióban vagy adatközpontban.

Biztonság

A Service Bus támogatja a standard Advanced Message Queuing Protocol (AMQP) 1.0 és HTTP/REST protokollokat.

Megjegyzés

További információ ezekről a funkciókról: Az Azure Service Bus speciális funkciói.

Szabványoknak és protokolloknak való megfelelőség

A Service Bus elsődleges átviteli protokollja az Advanced Messaging Queueing Protocol (AMQP) 1.0, amely egy nyílt ISO/IEC szabvány. Lehetővé teszi az ügyfelek számára, hogy olyan alkalmazásokat írjanak, amelyek a Service Bus és a helyszíni közvetítők, például az ActiveMQ vagy a RabbitMQ ellen működnek. Az AMQP protokoll útmutatója részletes információkat nyújt arra az esetre, ha ilyen absztrakciót szeretne létrehozni.

A Service Bus Premium teljes mértékben megfelel a Java/Jakarta EE Java Message Service (JMS) 2.0 API-nak . A Service Bus Standard támogatja az üzenetsorokra összpontosító JMS 1.1-alkészletet. A JMS egy gyakori absztrakció az üzenetközvetítők számára, és számos alkalmazással és keretrendszerrel integrálható, beleértve a népszerű Spring-keretrendszert is. Más közvetítőkről az Azure Service Busra való váltáshoz újra létre kell hoznia az üzenetsorok és témakörök topológiáját, és módosítania kell az ügyfélszolgáltató függőségeit és konfigurációját. Példaként tekintse meg az ActiveMQ migrálási útmutatót.

Ügyfélkódtárak

A teljes mértékben támogatott Service Bus-ügyfélkódtárak az Azure SDK-val érhetők el.

Az Azure Service Bus elsődleges protokollja az AMQP 1.0, és bármely AMQP 1.0-kompatibilis protokollügyfélről használható. Számos nyílt forráskódú AMQP-ügyfél rendelkezik olyan mintákkal, amelyek kifejezetten a Service Bus együttműködési képességét mutatják be. Tekintse át az AMQP 1.0 protokoll útmutatóját , amelyből megtudhatja, hogyan használhatja a Service Bus-funkciókat közvetlenül az AMQP 1.0-ügyfelekkel.

Nyelv Kódtár
Java Apache Qpid Proton-J
C/C++ Azure uAMQP C, Apache Qpid Proton-C
Python Pythonhoz készült Azure uAMQP, Apache Qpid Proton Python
PHP Azure uAMQP PHP-hez
Ruby Apache Qpid Proton Ruby
Go Azure Go AMQP, Apache Qpid Proton Go
C#/F#/VB AMQP .NET Lite, Apache NMS AMQP
JavaScript/Node Rhea

Integráció

A Service Bus teljes mértékben integrálható számos Microsoft- és Azure-szolgáltatással, például:

Következő lépések

A Service Bus-üzenetküldéssel való megismerkedéshez tekintse meg a következő cikkeket: