Service Bus-üzenetsorok, -témakörök és -előfizetések

Az Azure Service Bus támogatja a megbízható üzenetsorkezelést és a tartós közzétételi/feliratkozási üzenetküldést. A Service Bus üzenetkezelési képességeinek magját alkotó üzenetkezelési entitások üzenetsorok, témakörök és előfizetések.

Fontos

Ha még nem ismerkedik az Azure Service Bus szolgáltatással, olvassa el az Azure Service Bus mi az? című cikket, mielőtt áttekintené ezt a cikket.

Várólisták

Az üzenetsorok elsőnek be, elsőnek ki (First In, First Out, FIFO) üzenetküldést biztosítanak egy vagy több versengő fogyasztó számára. Ez azt jelzi, hogy a fogadók általában abban a sorrendben fogadják és dolgozzák fel az üzeneteket, amelyben hozzáadták őket az üzenetsorhoz. És csak egy üzenet fogad és dolgoz fel minden üzenetet.

Image showing how Service Queues work.

Az üzenetsorok használatának egyik fő előnye az alkalmazásösszetevők időbeli leválasztása. Más szóval a gyártóknak (feladóknak) és a fogyasztóknak (fogadóknak) nem kell egyszerre üzeneteket küldeniük és fogadniuk, mert az üzeneteket tartósan tárolják az üzenetsorban. Ezenkívül a gyártónak nem kell megvárnia a fogyasztó válaszát, hogy továbbra is feldolgozhassa és elküldhesse az üzeneteket.

Ennek egyik előnye a terheléselosztás, amely lehetővé teszi a gyártók és a fogyasztók számára, hogy különböző arányban küldjenek és fogadjanak üzeneteket. Számos alkalmazásban a rendszer terhelése idővel változik. Az egyes munkaegységekhez szükséges feldolgozási idő azonban általában állandó. Az üzenetkészítők és a fogyasztók üzenetsorokkal való közvetítése azt jelenti, hogy a fogyasztó alkalmazásnak csak az átlagos terhelést kell kezelnie a csúcsterhelés helyett. A bejövő terhelés változásával az üzenetsor hossza nő vagy csökken. Ez a funkció közvetlenül pénzt takarít meg az alkalmazás terhelésének kiszolgálásához szükséges infrastruktúra mennyiségével kapcsolatban. A terhelés növekedésével több feldolgozói folyamat is hozzáadható az üzenetsorból való olvasáshoz. Az egyes üzeneteket a feldolgozó folyamatoknak csak az egyike dolgozza fel. Továbbá ez a lekéréses alapú terheléselosztás lehetővé teszi a feldolgozó számítógépek legjobb használatát még akkor is, ha a teljesítmény-lekéréses üzeneteket feldolgozó feldolgozó feldolgozó számítógépek a saját maximális sebességükön dolgoznak. Ezt a mintát gyakran a versengő felhasználó mintának hívják.

Az üzenetsorok használata az üzenetkészítők és a fogyasztók köztes állapotba helyezése biztosítja az összetevők belső laza összekapcsolását. Mivel a termelők és a fogyasztók nem ismerik egymást, a fogyasztó frissíthető anélkül, hogy hatással lenne a gyártóra.

Üzenetsorok létrehozása

Az üzenetsorokat az alábbi lehetőségek egyikével hozhatja létre:

Ezután küldjön és fogadj üzeneteket programozási nyelven írt ügyfelekkel, beleértve az alábbiakat is:

Fogadási módok

Két különböző módot adhat meg, amelyekben a felhasználók üzeneteket fogadhatnak a Service Bustól.

  • Fogadás és törlés. Ebben a módban, amikor a Service Bus megkapja a kérést a fogyasztótól, az az üzenetet használatban lévőként jelöli meg, és visszaküldi a fogyasztói alkalmazásnak. Ez a mód a legegyszerűbb modell. Az olyan helyzetekben működik a legjobban, amikor az alkalmazás nem tudja feldolgozni az üzeneteket, ha hiba történik. A forgatókönyv megértéséhez fontolja meg azt a forgatókönyvet, amelyben a fogyasztó kiadja a fogadási kérelmet, majd a feldolgozás előtt összeomlik. Mivel a Service Bus használatként jelöli meg az üzenetet, az alkalmazás újrainduláskor megkezdi az üzenetek fogyasztását. Az összeomlás előtt felhasznált üzenet nem jelenik meg. Ezt a folyamatot gyakran nevezik legfeljebb egyszer feldolgozásnak.
  • Betekintő zár. Ebben a módban a fogadási művelet kétszakaszossá válik, ami lehetővé teszi olyan alkalmazások támogatását, amelyek működését zavarják a hiányzó üzenetek.
    1. Megkeresi a következő felhasználandó üzenetet, zárolja, hogy más felhasználók ne kapják meg, majd küldje vissza az üzenetet az alkalmazásnak.

    2. Miután az alkalmazás befejezi az üzenet feldolgozását, kérést küld a Service Bus szolgáltatásnak, hogy hajtsa végre a fogadási folyamat második szakaszát. Ezután a szolgáltatás az üzenetet felhasználtként jelöli meg.

      Ha az alkalmazás valamilyen okból nem tudja feldolgozni az üzenetet, kérheti a Service Bus szolgáltatástól, hogy hagyja abba az üzenetet. A Service Bus feloldja az üzenetet, és elérhetővé teszi azt, hogy ugyanaz a fogyasztó vagy egy másik versengő fogyasztó ismét megkapja. Másodszor, a zároláshoz időkorlát van társítva. Ha az alkalmazás nem tudja feldolgozni az üzenetet a zárolási időkorlát lejárata előtt, a Service Bus feloldja az üzenet zárolását, és lehetővé teszi az újbóli fogadását.

      Ha az alkalmazás az üzenet feldolgozása után, de még az előtt omlik össze, hogy kérést küldene a Service Bus szolgáltatásnak az üzenetfeldolgozás befejezésére, a Service Bus ismét kézbesíti az üzenetet az alkalmazásnak, amikor az újraindul. Ezt a folyamatot gyakran legalább egyszer feldolgozzák. Ez azt jelenti, hogy minden üzenet legalább egyszer fel lesz dolgozva. Bizonyos helyzetekben azonban előfordulhat, hogy ugyanazt az üzenetet újra kézbesítik. Ha a forgatókönyv nem tudja elviselni a duplikált feldolgozást, adjon hozzá további logikát az alkalmazáshoz az ismétlődések észleléséhez. További információ: Duplikált észlelés, amelyet pontosan egyszer kell feldolgozni.

      Megjegyzés:

      A két módról további információt a fogadási műveletek kiegyenlítése című témakörben talál.

Témakörök és előfizetések

Az üzenetsor lehetővé teszi az üzenetek egyetlen fogyasztó általi feldolgozását. Az üzenetsorokkal ellentétben a témakörök és előfizetések egy-a-többhöz típusú kommunikációt biztosítanak egy közzétételi és előfizetési mintában. Ez hasznos lehet, amikor nagy számú címzetthez kell méretezni a rendszert. Minden közzétett üzenet elérhetővé válik a témakörben regisztrált összes előfizetésnél. A Publisher üzenetet küld egy témakörnek, és egy vagy több előfizető megkapja az üzenet másolatát.

Image showing a Service Bus topic with three subscriptions.

Az előfizetések további szűrőkkel korlátozhatják a fogadni kívánt üzeneteket. A közzétevők ugyanúgy küldenek üzeneteket egy témakörbe, mint egy üzenetsorba. A felhasználók azonban nem kapnak közvetlenül a témakörből üzeneteket. Ehelyett a felhasználók üzeneteket kapnak a témakör előfizetéseitől. Egy témakör-előfizetés hasonlít egy virtuális üzenetsorra, amely megkapja a témakörbe küldött üzenetek másolatait. A fogyasztók ugyanúgy kapnak üzeneteket egy előfizetésből, mint ahogyan az üzenetsorból érkező üzeneteket fogadják.

Az üzenetsor üzenetküldő funkciója közvetlenül egy témakörre képez le, az üzenetátvevő funkció pedig egy előfizetésre képez le. Ez a funkció többek között azt jelenti, hogy az előfizetések ugyanazokat a mintákat támogatják, amelyeket az ebben a szakaszban korábban leírtak az üzenetsorok tekintetében: versengő fogyasztó, időbeli szétválasztás, terhelés simítás és terheléselosztás.

Témakörök és előfizetések létrehozása

A témakör létrehozása hasonló az üzenetsor létrehozásához az előző szakaszban leírtak szerint. Témaköröket és előfizetéseket az alábbi lehetőségek egyikével hozhat létre:

Ezután küldjön üzeneteket egy témakörnek, és fogadjon üzeneteket előfizetésekből programozási nyelven írt ügyfelek használatával, beleértve a következőket:

Szabályok és műveletek

Sok esetben az adott jellemzőkkel rendelkező üzeneteket különböző módokon kell feldolgozni. A feldolgozás engedélyezéséhez úgy konfigurálhatja az előfizetéseket, hogy megtalálják a kívánt tulajdonságokkal rendelkező üzeneteket, majd bizonyos módosításokat hajtsanak végre ezen tulajdonságokon. Bár a Service Bus-előfizetések az összes, a témakörnek küldött üzenetet látják, ezeknek az üzeneteknek csak egy részét másolhatja a virtuális előfizetés üzenetsorába. Ez a szűrés előfizetési szűrőkkel történik. Az ilyen módosításokat szűrőműveleteknek nevezzük. Előfizetés létrehozásakor megadhat egy szűrőkifejezést, amely az üzenet tulajdonságain működik. A tulajdonságok lehetnek a rendszertulajdonságok (például a Címke) és az egyéni alkalmazástulajdonságok (például StoreName). Ebben az esetben az SQL-szűrőkifejezés nem kötelező. SQL-szűrőkifejezés nélkül az előfizetésben definiált szűrőműveleteket az adott előfizetés összes üzenetén végrehajtja a rendszer.

A teljes munkaért tekintse meg a GitHub TopicFilters-mintáját . További információ a szűrőkről: Témakörszűrők és műveletek.

Java Message Service (JMS) 2.0-entitások

A következő entitások a Java Message Service (JMS) 2.0 API-n keresztül érhetők el.

  • Ideiglenes üzenetsorok
  • Ideiglenes témakörök
  • Megosztott tartós előfizetések
  • Nem tagolt tartós előfizetések
  • Megosztott, nem tartós előfizetések
  • Nem tagolt, nem tartós előfizetések

További információ a JMS 2.0-entitásokról és azok használatáról.

Következő lépések

Próbálja ki a mintákat a választott nyelven:

A régebbi .NET- és Java-ügyfélkódtárakat használó mintákhoz használja az alábbi hivatkozásokat:

2026. szeptember 30-án kivonjuk az Azure Service Bus SDK-kódtárakat a WindowsAzure.ServiceBus, a Microsoft.Azure.ServiceBus és a com.microsoft.azure.servicebus kódtárakból, amelyek nem felelnek meg az Azure SDK irányelveinek. Az SBMP protokoll támogatását is megszüntetjük, így 2026. szeptember 30. után már nem használhatja ezt a protokollt. Migrálás a legújabb Azure SDK-kódtárakba, amelyek kritikus fontosságú biztonsági frissítéseket és továbbfejlesztett képességeket kínálnak ezen dátum előtt.

Bár a régebbi kódtárak 2026. szeptember 30-tól továbbra is használhatók, a Microsoft már nem kap hivatalos támogatást és frissítéseket. További információkért lásd a támogatási nyugdíjazási bejelentést.