Mi az Azure Service Bus?

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átadás, valamint vezérlés a szolgáltatás és az alkalmazáshatárok között
  • A nagy megbízhatóságot igénylő tranzakciós munka koordinálása

Á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, 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 átvitele, például értékesítési vagy beszerzési rendelések, naplók vagy készletmozgások.

  • 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 úgy van simulva , hogy a forgalomcsúcsok ne haladják túl a szolgáltatást.

  • Terheléselosztás. Lehetővé teszi, hogy egyszerre több versengő fogyasztó 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 kapcsolatot a közzétevők és az előfizetők között, így az előfizetők bizonyos üzeneteket választhatnak ki 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ás után válnak láthatóvá az alsóbb rétegbeli fogyasztók számára, beleértve a bemeneti üzenet 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ához a nagyobb megoldáskörnyezetben.

  • Üzenet-munkamenetek. A munkafolyamatok és a többszörös átvitelek nagy léptékű koordinációjának megvalósítása, 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 az ön által ismertekhez. 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 az alábbi 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 mentések kezelése
  • Feladatátvétel 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 nem érhető az üzenetek fogadásához és feldolgozásához.

Üzenetsor

Az üzenetsorokban lévő üzeneteket a rendszer az érkezéskor rendezi és időbélyegzi. Miután a közvetítő elfogadta az üzenetet, az üzenet mindig tartósan három redundáns tárolóban lesz tárolva, elosztva a rendelkezésre állási zónák között, ha a névtér zónaalapú. A Service Bus addig tárolja az üzeneteket a memóriában vagy a felejthető tárolóban, amíg az ügyfél az elfogadott módon nem jelenti őket.

Az üzenetek lekéréses módban érkeznek, és csak kérés esetén kézbesítenek üzeneteket. 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ődik be, ha egy üzenet elérhető.

Megjegyzés

A Service Bus-üzenetsorok és a Storage-üzenetsorok összehasonlítását lásd: Tárolási üzenetsorok és Service Bus-üzenetsorok – összehasonlítva és kontrasztos.

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.

Témakör

A témakörök több független előfizetéssel is rendelkezhetnek, amelyek a témakörhöz kapcsolódnak, és máskülönben pontosan ugyanúgy működnek, mint a fogadó oldalról érkező ü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 neve 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-val a Service Bus Premium lehetővé teszi, hogy a kapcsolat időtartama alatt létező, változékony előfizetéseket hozzon létre.

Az előfizetésekre vonatkozó szabályokat definiálhat. Az előfizetési szabály szűrővel rendelkezik, amely meghatározza az előfizetésbe másolandó üzenet 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.
  • Az előfizetésen keresztüli továbbításkor további metaadatokat tartalmazó üzeneteket szeretne megjelölni.

Megjegyzés

Az üzenetsorokról és a témakörökről további információt a Service Bus üzenetsorai, témakörei és előfizetései 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ékben történő 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

A Service Bus-üzenetsorokban vagy -előfizetésekben lévő üzenetek feldolgozására vonatkozó, első bejelentkezésre vonatkozó (FIFO) garancia megvalósításához használjon munkameneteket. A munkamenetek a kérés-válasz minták implementálásához is használhatók. A kérés-válasz minta lehetővé teszi, hogy a küldő alkalmazás küldjön egy kérést, és lehetővé teszi, hogy a fogadó helyesen küldjön vissza egy választ a küldő alkalmazásnak. További információ: Üzenet-munkamenetek

Automatikus továbbítás

Az Automatikus továbbítás funkció lehetővé teszi, hogy egy üzenetsort vagy előfizetést egy másik, ugyanazon névtér részét képező üzenetsorhoz vagy témakörhöz láncolódjon. 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). További információ: Service Bus-entitások láncolása automatikus továbbítással

Kézbesíthetetlen levelek

A Service Bus-üzenetsorok és a témakör-előfizetések másodlagos allekérdezéseket, úgynevezett kézbesítetlen üzeneteket tartalmazó üzenetsort (DLQ) biztosítanak. A kézbesítetlen levelek üzenetsora olyan üzeneteket tartalmaz, amelyeket nem lehet kézbesíteni egyetlen fogadónak sem, vagy amelyeket nem lehet feldolgozni. Ezután eltávolíthatja az üzeneteket a kézbesíthetetlen levelek várólistájáról, és megvizsgálhatja azokat. Egy alkalmazás egy operátor segítségével kijavíthatja a problémákat, és újra elküldheti az üzenetet, naplózhatja a hiba tényét, és korrekciós műveletet hajthat végre. További információ: A Service Bus kézbesítetlen levelek üzenetsorainak áttekintése.

Ü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. További információ: Ütemezett üzenetek.

Ü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 elhalaszthatja 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. További információ: Üzenet halasztása.

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. További információ: A Service Bus-tranzakciók feldolgozásának áttekintése.

Szűrők é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. Minden szabály egy szűrőfeltételből áll, amely bizonyos üzeneteket választ ki, és opcionálisan tartalmaz egy műveletet , amely széljegyzetet ad a kijelölt üzenetnek. 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. További információ: Témakörszűrők és műveletek.

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 üzenetsoron. 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ált észlelés kiveszi a kételyeket ezekből a helyzetekből azáltal, hogy lehetővé teszi a feladónak, hogy újra elküldje ugyanazt az üzenetet, és az üzenetsor vagy a témakör elveti az ismétlődő másolatokat. További információ: Duplikált észlelés.

Biztonság

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

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

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.

Megjegyzés

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

Szabványoknak és protokolloknak való megfelelés

A Service Bus elsődleges vezetékes protokollja az Advanced Messaging Queueing Protocol (AMQP) 1.0, 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 dolgoznak. 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 pedig támogatja az üzenetsorokra összpontosító JMS 1.1-részhalmazt. A JMS az üzenetközvetítők gyakori absztrakciója, és számos alkalmazással és keretrendszerrel integrálható, beleértve a népszerű Spring-keretrendszert is. Ha más közvetítőkről Azure Service Bus szeretne váltani, csak ú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éldául 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-on keresztül érhetők el.

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 szemléltetik a Service Bus együttműködési lehetőségeit. 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 Azure uAMQP For Python, 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: