Aszinkrón üzenetküldési lehetőségek az Azure-banAsynchronous messaging options in Azure

Ez a cikk a különböző típusú üzeneteket és az üzenetkezelési infrastruktúrában részt vevő entitásokat ismerteti.This article describes the different types of messages and the entities that participate in a messaging infrastructure. Az egyes üzenetek típusának követelményei alapján a cikk az Azure Messaging Services szolgáltatást ajánlja.Based on the requirements of each message type, the article recommends Azure messaging services. A lehetőségek közé tartoznak a Azure Service Bus, a Event Gridés a Event Hubs.The options include Azure Service Bus, Event Grid, and Event Hubs.

Építészeti szinten az üzenet egy entitás (előállító) által létrehozott datagram, amely az információk terjesztését teszi lehetővé, hogy más entitások (fogyasztók) megismerhessék és ennek megfelelően járjanak el.At an architectural level, a message is a datagram created by an entity (producer), to distribute information so that other entities (consumers) can be aware and act accordingly. A gyártó és a fogyasztó közvetlenül vagy opcionálisan tud kommunikálni egy közvetítői entitáson (Message Broker) keresztül.The producer and the consumer can communicate directly or optionally through an intermediary entity (message broker). Ez a cikk a Message Broker használatával történő aszinkron üzenetküldésre összpontosít.This article focuses on asynchronous messaging using a message broker.

Az aszinkron üzenetkezelésben részt venni kívánó entitások

Az üzenetek két fő kategóriába sorolhatók.Messages can be classified into two main categories. Ha a gyártó egy műveletet vár a fogyasztótól, az üzenet egy parancs.If the producer expects an action from the consumer, that message is a command. Ha az üzenet tájékoztatja a fogyasztót arról, hogy egy művelet megtörtént, akkor az üzenet egy esemény.If the message informs the consumer that an action has taken place, then the message is an event.

ParancsokCommands

A gyártó egy parancsot küld azzal a szándékkal, hogy a fogyasztó (k) egy műveletet hajt végre az üzleti tranzakciók hatókörén belül.The producer sends a command with the intent that the consumer(s) will perform an operation within the scope of a business transaction.

A parancs egy nagy értékű üzenet, és legalább egyszer meg kell adni.A command is a high-value message and must be delivered at least once. Ha egy parancs elvész, a teljes üzleti tranzakció sikertelen lehet.If a command is lost, the entire business transaction might fail. A parancs nem dolgozható fel többször is.Also, a command shouldn't be processed more than once. Ennek hatására hibás tranzakció lehet.Doing so might cause an erroneous transaction. Előfordulhat, hogy egy ügyfél duplikált rendeléseket kap, vagy kétszer számláz.A customer might get duplicate orders or billed twice.

A parancsok gyakran használják egy többlépéses üzleti tranzakció munkafolyamatának felügyeletére.Commands are often used to manage the workflow of a multistep business transaction. Az üzleti logikától függően a gyártó elvárható, hogy a fogyasztó tudomásul veszi az üzenetet, és jelentést készít a művelet eredményeiről.Depending on the business logic, the producer may expect the consumer to acknowledge the message and report the results of the operation. Az eredmény alapján a gyártó megfelelő műveletet választhat.Based on that result, the producer may choose an appropriate course of action.

EseményekEvents

Az esemény olyan típusú üzenet, amelyet a termelő a tények bejelentésére emel.An event is a type of message that a producer raises to announce facts.

A gyártó (ennek a kontextusnak a közzétevője ) nem vár arra, hogy az események bármilyen műveletet eredményeznek.The producer (known as the publisher in this context) has no expectations that the events will result in any action.

Az érdekelt fogyasztó (k) előfizethetnek, figyelheti az eseményeket, és a felhasználási helyzettől függően műveleteket végezhet.Interested consumer(s), can subscribe, listen for events, and take actions depending on their consumption scenario. Az eseményekhez több előfizető vagy egyetlen előfizető sem tartozhat.Events can have multiple subscribers or no subscribers at all. Két különböző előfizető reagálhat a különböző műveletekkel rendelkező eseményekre, és nem feltétlenül kell egymással foglalkoznia.Two different subscribers can react to an event with different actions and not be aware of one another.

A gyártó és a fogyasztó egymástól függetlenül és önállóan kezelhető.The producer and consumer are loosely coupled and managed independently. Nem várható, hogy a fogyasztó visszaigazolja az eseményt a gyártónak.The consumer isn't expected to acknowledge the event back to the producer. Egy fogyasztó, aki már nem érdekli az események iránt, lemondhatja az előfizetést.A consumer that is no longer interested in the events, can unsubscribe. A fogyasztó eltávolításra kerül a folyamatból anélkül, hogy befolyásolná a rendszer gyártóját vagy általános funkcióit.The consumer is removed from the pipeline without affecting the producer or the overall functionality of the system.

Az események két kategóriába sorolhatók:There are two categories of events:

  • A gyártó eseményeket vet fel a különálló tények bejelentésére.The producer raises events to announce discrete facts. Gyakori használati eset: esemény-értesítés.A common use case is event notification. Például a Azure Resource Manager eseményeket hoz létre, módosítja vagy törli az erőforrásokat.For example, Azure Resource Manager raises events when it creates, modifies, or deletes resources. Ezen események előfizetői lehetnek olyan logikai alkalmazások, amelyek riasztási e-maileket küldenek.A subscriber of those events could be a Logic App that sends alert emails.

  • A gyártó a kapcsolódó eseményeket egy sorozatban, vagy egy adott időszakon belül az események streamjét emeli ki.The producer raises related events in a sequence, or a stream of events, over a period of time. A rendszer általában egy streamet használ a statisztikai kiértékeléshez.Typically, a stream is consumed for statistical evaluation. A kiértékelés egy időszakos ablakon belül vagy esemény érkezésekor is elvégezhető.The evaluation can be done within a temporal window or as events arrive. A telemetria gyakori használati eset, például a rendszer állapotának és terhelésének figyelése.Telemetry is a common use case, for example, health and load monitoring of a system. Egy másik eset a IoT-eszközökről érkező esemény-adatfolyam.Another case is event streaming from IoT devices.

Az események üzenetküldésének megvalósítására szolgáló általános minta a közzétevő-előfizető minta.A common pattern for implementing event messaging is the Publisher-Subscriber pattern.

Az események üzenetküldésének Publisher-Subscriber mintája

Az üzenet-átvitelszervező szerepe és előnyeiRole and benefits of a message broker

A köztes Message Broker lehetővé teszi, hogy az üzeneteket a gyártótól a fogyasztóig helyezze át, és további előnyöket is biztosítson.An intermediate message broker provides the functionality of moving messages from producer to consumer and can offer additional benefits.

SzétválasztásDecoupling

Az üzenetsor leválasztja a termelőt a fogyasztótól abban a logikában, amely az üzeneteket hozza létre és használja.A message broker decouples the producer from the consumer in the logic that generates and uses the messages, respectively. Összetett munkafolyamatokban a közvetítő ösztönözni tudja az üzleti műveletek elválasztását, és segít a munkafolyamatok koordinálásában.In a complex workflow, the broker can encourage business operations to be decoupled and help coordinate the workflow.

Például egyetlen üzleti tranzakcióhoz külön műveletek szükségesek, amelyeket egy üzleti logikai sorozatban végeznek el.For example, a single business transaction requires distinct operations that are performed in a business logic sequence. A gyártó olyan parancsot ad ki, amely a fogyasztót egy művelet elindítására jelzi.The producer issues a command that signals a consumer to start an operation. A fogyasztó elismeri az üzenetet egy külön várólistában, amely a gyártótól érkező válaszok összefoglalására van fenntartva.The consumer acknowledges the message in a separate queue reserved for lining up responses for the producer. A gyártó csak a válasz fogadása után küld egy új üzenetet, hogy elindítsa a következő műveletet a sorozatban.Only after receiving the response, the producer sends a new message to start the next operation in the sequence. Egy másik fogyasztó dolgozza fel az üzenetet, és elküld egy befejezési üzenetet a válasz-várólistába.A different consumer processes that message and sends a completion message to the response queue. Az üzenetküldés használatával a szolgáltatások egymás között összehangolják a tranzakció munkafolyamatát.By using messaging, the services coordinate the workflow of the transaction among themselves.

Producer – fogyasztói kommunikáció

Az üzenetkezelési szolgáltatás időbeli leválasztást biztosít.A message broker provides temporal decoupling. A gyártónak és a fogyasztónak nem kell párhuzamosan futnia.The producer and consumer don't have to run concurrently. A gyártó küldhet üzenetet az üzenet-közvetítőnek a fogyasztó elérhetősége nélkül.A producer can send a message to the message broker regardless of the availability of the consumer. Ezzel szemben a gyártó rendelkezésre állása nem korlátozza a fogyasztót.Conversely, the consumer isn't restricted by the producer's availability.

Egy webalkalmazás felhasználói felülete például üzeneteket hoz létre, és egy várólistát használ a Message Broker számára.For example, the user interface of a web app generates messages and uses a queue as the message broker. Ha elkészült, a felhasználók lekérhetik az üzeneteket a várólistából, és elvégezhetik a munkát.When ready, consumers can retrieve messages from the queue and perform the work. Az időbeli leválasztás segít a felhasználói felületnek a válaszadásban.Temporal decoupling helps the user interface to remain responsive. Az üzenetek aszinkron kezelése nem tiltott.It's not blocked while the messages are handled asynchronously.

Bizonyos műveletek végrehajtása hosszú időt vehet igénybe.Certain operations can take long to complete. A parancs kiadása után a termelőnek nem kell megvárnia, amíg a fogyasztó be nem fejeződik.After issuing a command, the producer shouldn't have to wait until the consumer completes it. Az üzenetkezelés segíti az üzenetek aszinkron feldolgozását.A message broker helps asynchronous processing of messages.

TerheléselosztásLoad balancing

A gyártók nagy mennyiségű üzenetet küldhetnek, amelyet számos felhasználó szervizel.Producers may post a large number of messages that are serviced by many consumers. A Message Broker használatával terjesztheti a feldolgozást a kiszolgálók között, és javíthatja az átviteli sebességet.Use a message broker to distribute processing across servers and improve throughput. A felhasználók különböző kiszolgálókon futhatnak a terhelés elosztása érdekében.Consumers can run on different servers to spread the load. A felhasználókat szükség esetén dinamikusan fel lehet venni a rendszerbe, vagy más módon eltávolíthatók.Consumers can be added dynamically to scale out the system when needed or removed otherwise.

Versengő fogyasztók mintája

A versengő fogyasztói minta azt ismerteti, hogyan lehet egyszerre több üzenetet feldolgozni az átviteli sebesség optimalizálása, a méretezhetőség és a rendelkezésre állás javítása, valamint a munkaterhelés elosztása érdekében.The Competing Consumers Pattern explains how to process multiple messages concurrently to optimize throughput, to improve scalability and availability, and to balance the workload.

Terhelés simításaLoad leveling

A gyártó vagy a termelői csoport által létrehozott üzenetek mennyisége változó lehet.The volume of messages generated by the producer or a group of producers can be variable. Időnként előfordulhat, hogy nagy mennyiségű kötet okozza az üzeneteket.At times there might be a large volume causing spikes in messages. Ahelyett, hogy a felhasználók számára felvenné ezt a munkát, az üzenetsor pufferként működhet, és a felhasználók a rendszer kihangsúlyozása nélkül fokozatosan kiürítik az üzeneteket a saját tempójában.Instead of adding consumers to handle this work, a message broker can act as a buffer, and consumers gradually drain messages at their own pace without stressing the system.

Üzenetsor-alapú terheléselosztási minta

A várólista-alapú terheléselosztási minta további információkat biztosít.The Queue-based Load Leveling Pattern provides more information.

Megbízható üzenetkezelésReliable messaging

Az üzenetsor segítségével biztosítható, hogy az üzenetek még akkor sem vesszenek el, ha a gyártó és a fogyasztó között nem sikerül a kommunikáció.A message broker helps ensure that messages aren't lost even if communication fails between the producer and consumer. A gyártó üzeneteket küldhet az üzenet-közvetítőnek, és a fogyasztó lekérheti őket a kommunikáció újbóli létrehozásakor.The producer can post messages to the message broker and the consumer can retrieve them when communication is reestablished. A gyártó nincs letiltva, kivéve, ha elveszti a kapcsolatot az üzenetsor-átvitelszervezővel.The producer isn't blocked unless it loses connectivity with the message broker.

Rugalmas üzenetküldésResilient messaging

Az üzenetsor-átvitelszervező rugalmasságot biztosíthat a rendszer felhasználói számára.A message broker can add resiliency to the consumers in your system. Ha egy felhasználó egy üzenet feldolgozásakor meghibásodik, akkor a fogyasztó egy másik példánya feldolgozhatja az üzenetet.If a consumer fails while processing a message, another instance of the consumer can process that message. Az újrafeldolgozás lehetséges, mert az üzenet továbbra is fennáll a Közvetítőben.The reprocessing is possible because the message persists in the broker.

Az üzenet-átvitelszervező technológiai lehetőségeiTechnology choices for a message broker

Az Azure számos különböző szolgáltatással rendelkező Message Broker-szolgáltatást biztosít.Azure provides several message broker services, each with a range of features. A szolgáltatás kiválasztása előtt határozza meg az üzenet szándékát és követelményeit.Before choosing a service, determine the intent and requirements of the message.

Azure Service BusAzure Service Bus

Azure Service Bus várólisták kiválóan alkalmasak a parancsok a termelőktől a fogyasztókra történő átviteléhez.Azure Service Bus queues are well suited for transferring commands from producers to consumers. Íme néhány szempont.Here are some considerations.

Lekéréses modellPull model

Egy Service Bus üzenetsor fogyasztója folyamatosan lekérdezi Service Bus az új üzenetek elérhetőségének ellenőrzését.A consumer of a Service Bus queue constantly polls Service Bus to check if new messages are available. Az ügyfél SDK-k és a Azure functions trigger a modell Service Bus absztrakt.The client SDKs and Azure Functions trigger for Service Bus abstract that model. Amikor új üzenet áll rendelkezésre, a rendszer meghívja a fogyasztó visszahívását, és elküldi az üzenetet a fogyasztónak.When a new message is available, the consumer's callback is invoked, and the message is sent to the consumer.

Garantált kézbesítésGuaranteed delivery

Service Bus lehetővé teszi a fogyasztó számára, hogy betekintést nyerjen a várólistába, és zároljon egy üzenetet más fogyasztótól.Service Bus allows a consumer to peek the queue and lock a message from other consumers.

A fogyasztó feladata az üzenet feldolgozási állapotának jelentése.It's the responsibility of the consumer to report the processing status of the message. Csak akkor, ha a fogyasztó felhasznált üzenetet jelöl, Service Bus eltávolítja az üzenetet a várólistából.Only when the consumer marks the message as consumed, Service Bus removes the message from the queue. Ha hiba, időtúllépés vagy összeomlás történik, Service Bus feloldja az üzenet zárolását, hogy más felhasználók is lekérhetik azt.If a failure, timeout, or crash occurs, Service Bus unlocks the message so that other consumers can retrieve it. Így az üzenetek nem vesznek el az átvitel során.This way messages aren't lost in transfer.

Előfordulhat, hogy egy termelő véletlenül kétszer ugyanazt az üzenetet küldi el.A producer might accidentally send the same message twice. A termelői példányok például egy üzenet elküldése után meghiúsulnak.For instance, a producer instance fails after sending a message. Egy másik gyártó helyettesíti az eredeti példányt, és újra elküldi az üzenetet.Another producer replaces the original instance and sends the message again. Azure Service Bus Queues olyan beépített duplázást képességet biztosít, amely észleli és eltávolítja az ismétlődő üzeneteket.Azure Service Bus queues provide a built-in de-duping capability that detects and removes duplicate messages. Még mindig van esély arra, hogy egy üzenetet kétszer is továbbítson.There's still a chance that a message is delivered twice. Ha például egy fogyasztó meghibásodik a feldolgozás közben, az üzenetet a rendszer visszaküldi a várólistába, és ugyanaz vagy egy másik felhasználó kéri le.For example, if a consumer fails while processing, the message is returned to the queue and is retrieved by the same or another consumer. A felhasználónak idempotens kell lennie, hogy még a munka megismétlése esetén is ne változzon a rendszer állapota.The message processing logic in the consumer should be idempotent so that even if the work is repeated, the state of the system isn't changed.

Üzenetek rendezéseMessage ordering

Ha azt szeretné, hogy a felhasználók az elküldött sorrendben kapják meg az üzeneteket, Service Bus Queues szolgáltatás a munkamenetek használatával megrendezett, első alkalommal megrendelt kézbesítést garantál.If you want consumers to get the messages in the order they are sent, Service Bus queues guarantee first-in-first-out (FIFO) ordered delivery by using sessions. Egy munkamenet egy vagy több üzenettel rendelkezhet.A session can have one or more messages. Az üzenetek korrelálnak a munkamenet -azonosító tulajdonsággal.The messages are correlated with the SessionId property. A munkamenet részét képező üzenetek soha nem járnak le.Messages that are part of a session, never expire. Egy munkamenet zárolható a fogyasztó számára, hogy megakadályozza az üzeneteinek egy másik fogyasztó általi kezelését.A session can be locked to a consumer to prevent its messages from being handled by a different consumer.

További információ: üzenetküldési munkamenetek.For more information, see Message Sessions.

Üzenetek megőrzéseMessage persistence

A Service Bus-várólisták támogatják az időbeli leválasztást.Service bus queues support temporal decoupling. Még akkor is, ha a fogyasztó nem érhető el, vagy nem tudja feldolgozni az üzenetet, a várólistán marad.Even when a consumer isn't available or unable to process the message, it remains in the queue.

Ellenőrzőpont hosszan futó tranzakcióiCheckpoint long-running transactions

Az üzleti tranzakciók hosszú ideig is futhatnak.Business transactions can run for a long time. A tranzakció minden művelete több üzenettel is rendelkezhet.Each operation in the transaction can have multiple messages. Az ellenőrzőpontok használatával koordinálhatja a munkafolyamatot, és biztosíthatja a rugalmasságot abban az esetben, ha egy tranzakció meghibásodik.Use checkpointing to coordinate the workflow and provide resiliency in case a transaction fails.

Service Bus várólisták lehetővé teszik az ellenőrzőpontok használatát a munkamenet-állapot lehetőségenkeresztül.Service Bus queues allow checkpointing through the session state capability. Az állapotadatok Növekményesen vannak rögzítve a várólistában (SetState) a munkamenethez tartozó üzenetek esetében.State information is incrementally recorded in the queue (SetState) for messages that belong to a session. Például a fogyasztó nyomon követheti a folyamat előrehaladását, ha ellenőrzi az állapotot (GetState) hébe-hóba.For example, a consumer can track progress by checking the state (GetState) every now and then. Ha egy fogyasztó meghibásodik, egy másik felhasználó az állapotadatok alapján meghatározhatja az utolsó ismert ellenőrzőpontot a munkamenet folytatásához.If a consumer fails, another consumer can use state information to determine the last known checkpoint to resume the session.

Kézbesítetlen levelek várólistája (DLQ)Dead-letter queue (DLQ)

A Service Bus üzenetsor alapértelmezett alvárólistája, a kézbesítetlen levelek várólistája (DLQ) , amely a nem kézbesíthető vagy feldolgozható üzenetek tárolására szolgál.A Service Bus queue has a default subqueue, called the dead-letter queue (DLQ) to hold messages that couldn't be delivered or processed. Service Bus vagy az üzenet feldolgozási logikája a fogyasztóban üzeneteket adhat a DLQ.Service Bus or the message processing logic in the consumer can add messages to the DLQ. A DLQ mindaddig megtartja az üzeneteket, amíg azok le nem állnak a várólistából.The DLQ keeps the messages until they are retrieved from the queue.

Íme néhány példa arra, amikor egy üzenet véget ért a DLQ:Here are examples when a message can end up being in the DLQ:

  • A Megmérgező üzenet olyan üzenet, amely nem kezelhető, mert helytelenül formázott vagy váratlan információt tartalmaz.A poison message is a message that cannot be handled because it's malformed or contains unexpected information. Service Bus várólistákban az üzenetsor MaxDeliveryCount tulajdonságának beállításával azonosíthatja a méreg üzeneteit.In Service Bus queues, you can detect poison messages by setting the MaxDeliveryCount property of the queue. Ha az üzenet fogadásának száma meghaladja ezt a tulajdonságot, Service Bus áthelyezi az üzenetet a DLQ.If number of times the same message is received exceeds that property value, Service Bus moves the message to the DLQ.

  • Előfordulhat, hogy egy üzenet többé nem lesz releváns, ha nem dolgozunk fel egy adott időszakon belül.A message might no longer be relevant if it isn't processed within a period. Service Bus Queues lehetővé teszi a gyártó számára, hogy az üzeneteket egy időben élő attribútummal tegye közzé.Service Bus queues allow the producer to post messages with a time-to-live attribute. Ha ez az időszak lejár az üzenet fogadása előtt, az üzenet a DLQ kerül.If this period expires before the message is received, the message is placed in the DLQ.

A hiba okának megállapításához vizsgálja meg a DLQ található üzeneteket.Examine messages in the DLQ to determine the reason for failure.

Hibrid megoldásHybrid solution

Service Bus hidakat a helyszíni rendszerek és a felhőalapú megoldások számára.Service Bus bridges on-premises systems and cloud solutions. A helyszíni rendszereket gyakran nehéz elérni a tűzfal korlátozásai miatt.On-premises systems are often difficult to reach because of firewall restrictions. Mind a gyártó, mind a fogyasztó (vagy a helyszínen, akár a felhőben is) használhatja a Service Bus üzenetsor-végpontot az üzenetek felvételének és eldobásának helyeként.Both the producer and consumer (either can be on-premises or the cloud) can use the Service Bus queue endpoint as the pickup and drop off location for messages.

Témakörök és előfizetésekTopics and subscriptions

A Service Bus a Publisher-Subscriber mintát Service Bus témakörökön és előfizetéseken keresztül támogatja.Service Bus supports the Publisher-Subscriber pattern through Service Bus topics and subscriptions.

Ez a funkció lehetővé teszi, hogy a gyártó üzeneteket továbbítson több fogyasztónak.This feature provides a way for the producer to broadcast messages to multiple consumers. Ha egy témakör üzenetet kap, a rendszer továbbítja az összes előfizetett fogyasztónak.When a topic receives a message, it's forwarded to all the subscribed consumers. Igény szerint az előfizetés rendelkezhet olyan szűrési feltételekkel, amelyek lehetővé teszik a fogyasztó számára az üzenetek egy részhalmazának beolvasását.Optionally, a subscription can have filter criteria that allows the consumer to get a subset of messages. Minden fogyasztó hasonló módon kérdezi le az üzeneteket egy előfizetésből egy várólistához.Each consumer retrieves messages from a subscription in a similar way to a queue.

További információ: Azure Service Bus témakörök.For more information, see Azure Service Bus topics.

Azure Event GridAzure Event Grid

A Azure Event Grid diszkrét eseményekhez ajánlott.Azure Event Grid is recommended for discrete events. Event Grid követi a Publisher-Subscriber mintát.Event Grid follows the Publisher-Subscriber pattern. Amikor az eseményforrás eseményeket indít, közzé lesznek téve az Event Grid-témakörökben.When event sources trigger events, they are published to Event grid topics. Ezeknek az eseményeknek a felhasználója Event Grid előfizetéseket hoz létre az eseményeket feldolgozó eseménytípus és eseménykezelő megadásával.Consumers of those events create Event Grid subscriptions by specifying event types and event handler that will process the events. Ha nincsenek előfizetők, a rendszer elveti az eseményeket.If there are no subscribers, the events are discarded. Minden esemény több előfizetéssel is rendelkezhet.Each event can have multiple subscriptions.

Leküldéses modellPush Model

Event Grid továbbítja az üzeneteket az előfizetőknek egy leküldéses modellben.Event Grid propagates messages to the subscribers in a push model. Tegyük fel, hogy egy Event Grid-előfizetéssel rendelkezik webhookmal.Suppose you have an event grid subscription with a webhook. Amikor új esemény érkezik, Event Grid az eseményt a webhook-végpontba könyveli.When a new event arrives, Event Grid posts the event to the webhook endpoint.

Az Azure-ban integráltIntegrated with Azure

Ha az Azure-erőforrásokkal kapcsolatos értesítéseket szeretne kapni, válassza a Event Grid lehetőséget.Choose Event Grid if you want to get notifications about Azure resources. Számos Azure-szolgáltatás olyan esemény-forrásként működik, amely beépített Event Grid témákat tartalmaz.Many Azure services act as event sources that have built-in Event Grid topics. A Event Grid az eseménykezelőkéntkonfigurálható különböző Azure-szolgáltatásokat is támogatja.Event Grid also supports various Azure services that can be configured as event handlers. A témakörök egyszerűen előfizethetnek az események az Ön által választott eseménykezelőbe való átirányításához.It's easy to subscribe to those topics to route events to event handlers of your choice. A Event Grid használatával például meghívhat egy Azure-függvényt egy blob-tároló létrehozásakor vagy törlésekor.For example, you can use Event Grid to invoke an Azure Function when a blob storage is created or deleted.

Egyéni témakörökCustom topics

Hozzon létre egyéni Event Grid témaköröket, ha az alkalmazásból vagy egy olyan Azure-szolgáltatásból szeretne eseményeket küldeni, amely nincs integrálva Event Gridval.Create custom Event Grid topics, if you want to send events from your application or an Azure service that isn't integrated with Event Grid.

Egy teljes üzleti tranzakció előrehaladásának megtekintéséhez például azt szeretné, hogy a résztvevő szolgáltatások az egyes üzleti műveleteik feldolgozásakor eseményeket emeljenek fel.For example, to see the progress of an entire business transaction, you want the participating services to raise events as they are processing their individual business operations. A webalkalmazás megjeleníti ezeket az eseményeket.A web app shows those events. Az egyik módszer az, ha egyéni témakört hoz létre, és hozzáad egy előfizetést a webalkalmazáshoz egy HTTP webhookon keresztül.One way is to create a custom topic and add a subscription with your web app registered through an HTTP WebHook. Ahogy az üzleti szolgáltatás eseményeket küld az egyéni témakörbe, Event Grid leküldi azokat a webalkalmazásnak.As business services send events to the custom topic, Event Grid pushes them to your web app.

Szűrt eseményekFiltered events

Megadhat szűrőket egy előfizetésben, amely arra utasítja Event Grid, hogy csak az események egy részhalmazát irányítsa egy adott eseménykezelőre.You can specify filters in a subscription to instruct Event Grid to route only a subset of events to a specific event handler. A szűrők az előfizetési sémábanvannak megadva.The filters are specified in the subscription schema. A rendszer minden olyan eseményt továbbít, amely megfelel a szűrőnek, automatikusan továbbítja az adott előfizetésnek.Any event sent to the topic with values that match the filter are automatically forwarded to that subscription.

Például a különböző formátumokban lévő tartalmak a Blob Storageba lesznek feltöltve.For example, content in various formats are uploaded to Blob Storage. A rendszer minden alkalommal felvesz egy eseményt, és közzéteszi Event Grid.Each time a file is added, an event is raised and published to Event Grid. Előfordulhat, hogy az esemény-előfizetés olyan szűrővel rendelkezik, amely csak a lemezképek eseményeit küldi el, így az eseménykezelő létrehozhat miniatűrket.The event subscription might have a filter that only sends events for images so that an event handler can generate thumbnails.

A szűréssel kapcsolatos további információkért lásd: Események szűrése Event Gridhoz.For more information about filtering, see Filter events for Event Grid.

Nagy átviteli sebességHigh throughput

A Event Grid régiónként másodpercenként 10 000 000 eseményt lehet irányítani.Event Grid can route 10,000,000 events per second per region. A havi első 100 000 művelet ingyenes.The first 100,000 operations per month are free. A Cost szempontokat lásd: Mennyibe kerül a Event Grid?For cost considerations, see How much does Event Grid cost?

Rugalmas kézbesítésResilient delivery

Annak ellenére, hogy az események sikeres kézbesítése nem annyira fontos, mint a parancsok, az esemény típusától függően továbbra is érdemes lehet némi garanciát biztosítani.Even though successful delivery for events isn't as crucial as commands, you might still want some guarantee depending on the type of event. A Event Grid olyan szolgáltatásokat kínál, amelyekkel engedélyezheti és testreszabhatja az újrapróbálkozási szabályzatokat, a lejárati időt és a kézbesítetlen betűket.Event Grid offers features that you can enable and customize, such as retry policies, expiration time, and dead lettering. További információ: kézbesítés és újrapróbálkozás.For more information, see Delivery and retry.

Event Grid újrapróbálkozási folyamata segíthet a rugalmasságban, de nem biztos, hogy nem működik.Event Grid's retry process can help resiliency but it's not fail-safe. Az újrapróbálkozási folyamat során a Event Grid többször is kézbesítheti az üzenetet, kihagyhatja vagy késleltetheti az egyes újrapróbálkozásokat, ha a végpont hosszú ideig nem válaszol.In the retry process, Event Grid might deliver the message more than once, skip, or delay some retries if the endpoint is unresponsive for a long time. További információ: az újrapróbálkozások időpontja és időtartama.For more information, see Retry schedule and duration.

Ha a kézbesítetlen üzenetek engedélyezve vannak, a blob Storage-fiókokhoz nem kézbesíthető események is megmaradhatnak.You can persist undelivered events to a blob storage account by enabling dead-lettering. Az üzenetnek a blob Storage-végponthoz való kézbesítésének késleltetése, és ha a végpont nem válaszol, Event Grid elveti az eseményt.There's a delay in delivering the message to the blob storage endpoint and if that endpoint is unresponsive, then Event Grid discards the event. További információ: kézbesítetlen levelek és újrapróbálkozási szabályzatok.For more information, see Dead letter and retry policies.

Azure Event HubsAzure Event Hubs

Ha egy esemény-adatfolyammal dolgozik, az Azure Event Hubs az ajánlott üzenetküldési ügynök.When working with an event stream, Azure Event Hubs is the recommended message broker. Lényegében nagy puffer, amely kis késleltetéssel képes nagy mennyiségű adatmennyiséget fogadni.Essentially, it's a large buffer that's capable of receiving large volumes of data with low latency. A fogadott adatok gyorsan olvashatók az egyidejű műveletek használatával.The received data can be read quickly through concurrent operations. A kapott adatelemzést bármely valós idejű elemzési szolgáltató használatával alakíthatja át.You can transform the received data by using any real-time analytics provider. A Event Hubs lehetővé teszi az események tárolási fiókban való tárolását is.Event Hubs also provides the capability to store events in a storage account.

Gyors betöltésFast ingestion

A Event Hubs másodpercenként több millió eseményt képes befogadni.Event Hubs is capable of ingesting millions of events per second. Az eseményeket a rendszer csak az adatfolyamhoz fűzi, és idő szerint rendezi.The events are only appended to the stream and are ordered by time.

Lekéréses modellPull model

A Event Gridhoz hasonlóan Event Hubs is Publisher-Subscriber képességeket kínál.Like Event Grid, Event Hubs also offers Publisher-Subscriber capabilities. Event Grid és Event Hubs között a legfontosabb különbség az, hogy az események az előfizetők számára elérhetővé válnak.A key difference between Event Grid and Event Hubs is in the way event data is made available to the subscribers. Event Grid leküldi a betöltött adatot az előfizetőknek, míg az Event hub a lekéréses modellben elérhetővé teszi az adatmennyiséget.Event Grid pushes the ingested data to the subscribers whereas Event Hub makes the data available in a pull model. Az események fogadásakor a Event Hubs hozzáfűzi a streamhez.As events are received, Event Hubs appends them to the stream. Az előfizető kezeli a kurzort, és a streamben előre és vissza is léphet, kiválaszthatja az időeltolódást, és a tempóban visszajátszhatja a sorozatot.A subscriber manages its cursor and can move forward and back in the stream, select a time offset, and replay a sequence at its pace.

A stream-processzorok olyan előfizetők, akik az adatok Event Hubsból való lekérése átalakítási és statisztikai elemzés céljából történik.Stream processors are subscribers that pull data from Event Hubs for the purposes of transformation and statistical analysis. Az összetett feldolgozáshoz Azure stream Analytics és Apache Spark használhat, például az összesítést az idő múlásával a Windowsban vagy a rendellenesség észlelése során.Use Azure Stream Analytics and Apache Spark for complex processing such as aggregation over time windows or anomaly detection.

Ha minden egyes eseményre partíciót szeretne használni, lekérheti az adatfeldolgozást az Event Processing Host vagy a beépített összekötő, például a Logic apps használatával az átalakítási logika biztosításához.If you want to act on each event per partition, you can pull the data by using Event Processing Host or by using built in connector such as Logic Apps to provide the transformation logic. Egy másik lehetőség a Azure functionshasználata.Another option is to use Azure Functions.

ParticionálásPartitioning

A partíció az esemény-adatfolyam egy részét képezi.A partition is a portion of the event stream. Az események a partíciós kulcs használatával vannak elosztva.The events are divided by using a partition key. Például több IoT-eszköz küldi az eszközön lévő eszközöket az Event hub szolgáltatásnak.For example, several IoT devices send device data to an event hub. A partíciós kulcs az eszköz azonosítója.The partition key is the device identifier. Az események betöltését követően a Event Hubs külön partícióra helyezi őket.As events are ingested, Event Hubs moves them to separate partitions. Minden partíción belül az összes eseményt idő szerint rendezi a rendszer.Within each partition, all events are ordered by time.

A fogyasztó a kód olyan példánya, amely feldolgozza az eseményre vonatkozó adatmennyiséget.A consumer is an instance of code that processes the event data. Event Hubs egy particionált fogyasztói mintát követ.Event Hubs follows a partitioned consumer pattern. Minden fogyasztó csak egy adott partíciót olvas be.Each consumer only reads a specific partition. Ha több partícióval rendelkezik, gyorsabb feldolgozást eredményez, mivel az adatfolyam egyszerre több felhasználó által is olvasható.Having multiple partitions results in faster processing because the stream can be read concurrently by multiple consumers.

Ugyanannak a fogyasztónak a példányai egyetlen fogyasztói csoportot alkotnak.Instances of the same consumer make up a single consumer group. Több fogyasztói csoport is olvashatja ugyanazt az adatfolyamot különböző szándékokkal.Multiple consumer groups can read the same stream with different intentions. Tegyük fel, hogy egy esemény-adatfolyam hőmérséklet-érzékelőből származó adatokkal rendelkezik.Suppose an event stream has data from a temperature sensor. Az egyik fogyasztói csoport beolvashatja a streamet, hogy észlelje a rendellenességeket, például a hőmérsékleti csúcsot.One consumer group can read the stream to detect anomalies such as a spike in temperature. Egy másik képes arra, hogy ugyanazt az adatfolyamot tudja kiszámítani egy időszakos időszakban a mozgóátlag hőmérsékletének kiszámításához.Another can read the same stream to calculate a rolling average temperature in a temporal window.

A Event Hubs több fogyasztói csoport engedélyezésével támogatja a Publisher-Subscriber mintát.Event Hubs supports the Publisher-Subscriber pattern by allowing multiple consumer groups. Minden fogyasztói csoport előfizető.Each consumer group is a subscriber.

További információ az Event hub particionálásáról: partíciók.For more information about Event Hub partitioning, see Partitions.

Event Hubs CaptureEvent Hubs Capture

A rögzítési funkció lehetővé teszi az esemény-adatfolyamok Azure Blob Storage -ba vagy Data Lake Storagebavaló tárolását.The Capture feature allows you to store the event stream to an Azure Blob storage or Data Lake Storage. Az események tárolásának ily módon megbízható, mert akkor is, ha a Storage-fiók nem érhető el, a rögzítés egy adott időszakra tartja az adatait, majd az elérhetővé tétel után írja a tárolóba.This way of storing events is reliable because even if the storage account isn't available, Capture keeps your data for a period, and then writes to the storage after it's available.

A Storage szolgáltatás további funkciókat is kínál az események elemzéséhez.Storage services can also offer additional features for analyzing events. Például egy blob Storage-fiók hozzáférési szintjeinek kihasználása révén a gyakori elérésű adatokhoz egy gyors szinten tárolhatja az eseményeket.For example, by taking advantage of the access tiers of a blob storage account, you can store events in a hot tier for data that needs frequent access. Ezeket az adatvizualizációkat is használhatja.You might use that data for visualization. Másik lehetőségként az archiválási szinten tárolhatók az adatok, és a naplózási célokra esetenként beolvashatók.Alternately, you can store data in the archive tier and retrieve it occasionally for auditing purposes.

A capture a Event Hubs által betöltött összes eseményt tárolja, és hasznos a kötegelt feldolgozáshoz.Capture stores all events ingested by Event Hubs and is useful for batch processing. A MapReduce függvénnyel jelentéseket készíthet az adatairól.You can generate reports on the data by using a MapReduce function. A rögzített adat az igazság forrása is lehet.Captured data can also serve as the source of truth. Ha bizonyos tények kimaradtak az adatok összesítése során, tekintse át a rögzített adatokat.If certain facts were missed while aggregating the data, you can refer to the captured data.

A szolgáltatással kapcsolatos további információkért lásd: események rögzítése az Azure-Event Hubs az Azure-ban blob Storage vagy Azure Data Lake Storage.For details about this feature, see Capture events through Azure Event Hubs in Azure Blob Storage or Azure Data Lake Storage.

Apache Kafka-ügyfelek támogatásaSupport for Apache Kafka clients

Event Hubs végpontot biztosít Apache Kafka -ügyfelek számára.Event Hubs provides an endpoint for Apache Kafka clients. A meglévő ügyfelek frissíthetik a konfigurációt úgy, hogy a végpontra mutassanak, és megkezdik az események küldését a Event Hubsba.Existing clients can update their configuration to point to the endpoint and start sending events to Event Hubs. Nincs szükség kód módosítására.No code changes are required.

További információ: Event Hubs Apache Kafkahoz.For more information, see Event Hubs for Apache Kafka.

Crossover-forgatókönyvekCrossover scenarios

Bizonyos esetekben előnyös a két üzenetkezelési szolgáltatás összevonása.In some cases, it's advantageous to combine two messaging services.

A szolgáltatások kombinálásával növelheti az üzenetkezelési rendszer hatékonyságát.Combining services can increase the efficiency of your messaging system. Az üzleti tranzakciójában például Azure Service Bus Queues használatával kezelheti az üzeneteket.For instance, in your business transaction, you use Azure Service Bus queues to handle messages. A többnyire tétlen és üzeneteket fogadó várólisták időnként nem hatékonyak, mert a fogyasztó folyamatosan kérdezi le az új üzenetek várólistáját.Queues that are mostly idle and receive messages occasionally are inefficient because the consumer is constantly polling the queue for new messages. Event Grid-előfizetést egy Azure-függvénnyel is beállíthatja az eseménykezelőként.You can set up an Event Grid subscription with an Azure Function as the event handler. Minden alkalommal, amikor a várólista üzenetet kap, és nincsenek figyelő fogyasztók, Event Grid küld egy értesítést, amely meghívja az Azure-függvényt, amely leképezi a várólistát.Each time the queue receives a message and there are no consumers listening, Event Grid sends a notification, which invokes the Azure Function that drains the queue.

Azure Service Bus az integráció Event Grid

A Service Bus Event Gridhoz való csatlakoztatásával kapcsolatos további információkért lásd: Azure Service Bus Event Grid az integráció áttekintéséhez.For details about connecting Service Bus to Event Grid, see Azure Service Bus to Event Grid integration overview.

A Vállalati integráció az Azure-ban az üzenetsor-használat és az események hivatkozási architektúrája Service Bus Event Grid-integráció megvalósítását mutatja be.The Enterprise integration on Azure using message queues and events reference architecture shows an implementation of Service Bus to Event Grid integration.

Íme egy másik példa.Here's another example. Event Grid olyan események fogadását kapja, amelyekben bizonyos eseményekhez szükség van egy munkafolyamatra, míg mások értesítést kapnak.Event Grid receives a set of events in which some events require a workflow while others are for notification. Az üzenet metaadatai az esemény típusát jelzik.The message metadata indicates the type of event. Ennek egyik módja, hogy a metaadatokat az esemény-előfizetés szűrési funkciója segítségével vizsgálja meg.One way is to check the metadata by using the filtering feature in the event subscription. Ha munkafolyamatra van szüksége, Event Grid küldi el Azure Service Bus várólistára.If it requires a workflow, Event Grid sends it to Azure Service Bus queue. A várólista fogadói elvégezhetik a szükséges műveleteket.The receivers of that queue can take necessary actions. A rendszer a riasztási e-mailek küldéséhez a Logic Apps küldi az értesítési eseményeket.The notification events are sent to Logic Apps to send alert emails.

Azure Event Grid az integráció Service Bus

Az aszinkron üzenetkezelés megvalósításakor vegye figyelembe ezeket a mintákat:Consider these patterns when implementing asynchronous messaging:

  • Versengő fogyasztók mintája.Competing Consumers Pattern. Előfordulhat, hogy több fogyasztónak is szüksége lehet a várólistán lévő üzenetek olvasására.Multiple consumers may need to compete to read messages from a queue. Ez a minta azt ismerteti, hogyan lehet egyszerre több üzenetet feldolgozni az átviteli sebesség optimalizálása, a méretezhetőség és a rendelkezésre állás javítása, valamint a számítási feladatok elosztása érdekében.This pattern explains how to process multiple messages concurrently to optimize throughput, to improve scalability and availability, and to balance the workload.
  • Prioritási várólista mintája.Priority Queue Pattern. Azokban az esetekben, amikor az üzleti logikához bizonyos üzenetek feldolgozása szükséges, a minta azt írja le, hogy a magasabb prioritású gyártó által közzétett üzeneteket a fogyasztó gyorsabban tudja fogadni és feldolgozni, mint az alacsonyabb prioritású üzenetek.For cases where the business logic requires that some messages are processed before others, this pattern describes how messages posted by a producer that have a higher priority can be received and processed more quickly by a consumer than messages of a lower priority.
  • Üzenetsor-alapú terheléselosztási minta.Queue-based Load Leveling Pattern. Ez a minta egy üzenet-közvetítőt használ egy termelő és egy fogyasztó közötti pufferként, hogy a lehető legkisebbre csökkentse a rendelkezésre állást és a válaszadást az egyes entitásokhoz tartozó időszakos nagy terhelések esetén.This pattern uses a message broker to act as a buffer between a producer and a consumer to help to minimize the impact on availability and responsiveness of intermittent heavy loads for both those entities.
  • Újrapróbálkozási minta.Retry Pattern. Előfordulhat, hogy egy termelő vagy fogyasztó nem tud csatlakozni egy várólistához, de a hiba oka lehet ideiglenes és gyors továbbítás.A producer or consumer might be unable connect to a queue, but the reasons for this failure may be temporary and quickly pass. Ez a minta azt ismerteti, hogyan kezelheti ezt a helyzetet, ha rugalmasságot szeretne hozzáadni egy alkalmazáshoz.This pattern describes how to handle this situation to add resiliency to an application.
  • A Feladatütemező ügynök felügyeleti mintája.Scheduler Agent Supervisor Pattern. A munkafolyamatok megvalósításának részeként gyakran használják az üzenetkezelést.Messaging is often used as part of a workflow implementation. Ez a minta azt mutatja be, hogy az üzenetkezelés hogyan koordinálhatja a műveletek egy csoportját a szolgáltatások és más távoli erőforrások elosztott készletében, valamint lehetővé teszi a rendszer számára a sikertelen műveletek helyreállítását és újrapróbálkozását.This pattern demonstrates how messaging can coordinate a set of actions across a distributed set of services and other remote resources, and enable a system to recover and retry actions that fail.
  • Koreográfia mintája.Choreography pattern. Ez a minta azt mutatja be, hogy a szolgáltatások hogyan használhatják az üzenetkezelést az üzleti tranzakciók munkafolyamatainak szabályozására.This pattern shows how services can use messaging to control the workflow of a business transaction.
  • Jogcím – ellenőrzési minta.Claim-Check Pattern. Ez a minta bemutatja, hogyan oszthat meg egy nagyméretű üzenetet egy jogcím-ellenőrzési és egy hasznos adat alapján.This pattern shows how to split a large message into a claim check and a payload.

Közösségi erőforrásokCommunity resources

Jonatán Oliver blogbejegyzése: idempotenciaJonathon Oliver's blog post: Idempotency

Martin Fowler blogbejegyzése: mit jelent az "Event-vezérelt" kifejezés?Martin Fowler's blog post: What do you mean by “Event-Driven”?