Teilen über


Pushübermittlung und Wiederholungen von Nachrichten mit Namespacethemen

Die Pushübermittlung von Event Grid-Namespaces stellt eine stabile Übermittlung bereit. Event Grid versucht, für jedes übereinstimmende Abonnement jede Nachricht mindestens ein Mal sofort zu übermitteln. Wenn der Endpunkt eines Abonnenten den Empfang eines Ereignisses nicht bestätigt oder wenn ein Fehler auftritt, wiederholt Event Grid die Übermittlung auf Grundlage eines festen Wiederholungszeitplans und einer festen Wiederholungsrichtlinie. Standardmäßig übermittelt Event Grid immer nur jeweils ein Ereignis an den Abonnenten.

Hinweis

Bei der Ereignisübermittlung durch Event Grid wird unter Umständen die Reihenfolge nicht eingehalten, sodass Abonnenten die Ereignisse ggf. nicht in der richtigen Reihenfolge erhalten.

Ereignisabonnement

Ein Ereignisabonnement ist eine Konfigurationsressource, die einem einzelnen Namespacethema zugeordnet ist. Ein Ereignisabonnement verwenden Sie unter anderem, um Kriterien für die Ereignisauswahl festzulegen, um die für einen Abonnenten verfügbare Ereignissammlung aus der Gesamtzahl der in einem Thema verfügbaren Ereignisse zu definieren. Mithilfe eines Ereignisabonnements definieren Sie auch den Zielendpunkt, an den die Ereignisse gesendet werden. Darüber hinaus können Sie mit einem Ereignisabonnement weitere Eigenschaften festlegen, z. B. die maximale Anzahl der Übermittlungsversuche und die Gültigkeitsdauer von Ereignissen, die wiederum das Laufzeitverhalten der Ereignisübermittlung definiert.

Wiederholungszeitplan

Bei einem Fehler für eine Ereignisübermittlung entscheidet Event Grid je nach Fehlertyp, ob die Übermittlung wiederholt werden soll.

Handelt es sich bei dem vom abonnierten Endpunkt zurückgegebenen Fehler um einen konfigurationsbedingten Fehler, der nicht durch eine Wiederholung behoben werden kann, sendet Event Grid das Ereignis an das konfigurierte Ziel für unzustellbare Nachrichten. Wenn kein Ziel für unzustellbare Nachrichten konfiguriert wurde, wird das Ereignis verworfen. Ein Ereignis wird beispielsweise als unzustellbar oder verworfen markiert, wenn der im Ereignisabonnement konfigurierte Endpunkt nicht erreicht werden kann, da er gelöscht wurde. Unter den folgenden Bedingungen und bei den angegebenen Fehlern wird die Übermittlung nicht wiederholt:

Bedingungen:

  • ArgumentException
  • TimeoutException
  • UnauthorizedAccessException
  • OperationCanceledException
  • SocketException |

Fehlercodes

  • 404 - NotFound
  • 401 - Unauthorized
  • 403 - Forbidden
  • 400 -BadRequest
  • 414 RequestUriTooLong

Hinweis

Wenn die Warteschlange für unzustellbare Nachrichten nicht für den Endpunkt konfiguriert ist, werden Ereignisse gelöscht, wenn die oben genannten Fehler oder Bedingungen auftreten. Es empfiehlt sich, in Ihrem Ereignisabonnement eine Warteschlange für unzustellbare Nachrichten zu konfigurieren, wenn Sie nicht möchten, dass diese Typen von Ereignissen verworfen werden. Unzustellbare Ereignisse werden gelöscht, wenn das Ziel für unzustellbare Ereignisse nicht gefunden wird.

Wenn die vom abonnierten Endpunkt zurückgegebene Bedingung oder der zurückgegebene Fehler nicht in den obigen Listen enthalten ist, führt Event Grid Wiederholungen nach dem folgenden exponentiellen Backoff-Zeitplan durch:

  • 0 Sekunden (sofortige Wiederholung)
  • 10 Sekunden
  • 30 Sekunden
  • 1 Minute
  • 5 Minuten

Nach 5 Minuten wiederholt Event Grid den Vorgang alle 5 Minuten, bis das Ereignis übermittelt wurde oder die maximale Anzahl Wiederholungen oder die Gültigkeitsdauer des Ereignisses erreicht ist.

Wiederholungsrichtlinie

Sie können die Wiederholungsrichtlinie mithilfe der beiden folgenden Konfigurationseigenschaften für das Ereignisabonnement anpassen. Ein Ereignis wird verworfen (keine konfigurierte Warteschlange für unzustellbare Nachrichten) oder in die Warteschlange für unzustellbare Nachrichten gestellt, wenn eine der beiden Eigenschaften ihren konfigurierten Grenzwert erreicht.

  • Maximale Zustellungsanzahl - Der Wert muss eine ganze Zahl zwischen 1 und 10 sein. Der Standardwert ist 10. Für die Pushübermittlung definiert diese Eigenschaft die maximale Anzahl Übermittlungsversuche.
  • Aufbewahrung: Diese Eigenschaft wird auch als event time to live bezeichnet. Der Wert muss eine ISO 8601-Zeitspanne mit Minutengenauigkeit sein. Diese Eigenschaft definiert die Dauer bis zum Ablaufen der Nachricht ab dem Zeitpunkt der Veröffentlichung des Ereignisses. Der zulässige Mindestwert ist 1 Minute (PT1M). Der zulässige Höchstwert ist 7 Tage oder die Aufbewahrungszeit des zugrunde liegenden Themas, je nachdem, welcher Wert niedriger ist. Das Azure-Portal bietet eine einfache Benutzeroberfläche, auf der Sie die Tage, Stunden und Minuten als ganze Zahlen angeben.

Hinweis

Wenn Sie sowohl Retention als auch Maximum delivery count festlegen, verwendet Event Grid diese Werte, um zu ermitteln, wann die Ereignisübermittlung beendet werden soll. Jeder der beiden Werte beendet die Ereignisübermittlung. Wenn Sie z. B. 20 Minuten als Aufbewahrungszeit und 10 als maximale Anzahl Übermittlungsversuche festlegen, bedeutet dies, dass das Ereignis nach 20 Minuten oder nach 10 Versuchen nicht mehr übermittelt wird, je nachdem, was zuerst eintritt. Das Ereignis wird dann als unzustellbar gekennzeichnet. Aufgrund des Wiederholungszeitplans hat das Festlegen der maximalen Anzahl Zustellungsversuche auf 10 jedoch keine Auswirkungen, da Ereignisse erst nach 20 Minuten als unzustellbar gekennzeichnet werden. Dies liegt an der Tatsache, dass nach 20 Minuten, der 8. Zustellungsversuch (0, 10 s, 30 s, 1 min, 5 min, 10 min, 15 min, 20 min) erfolgt, aber zu diesem Zeitpunkt das Ereignis bereits als unzustellbar gekennzeichnet wird.

Ausgabebatches

Wenn Sie als Zielendpunkttyp Webhooks verwenden, sendet Event Grid standardmäßig jedes Ereignis einzeln an die Abonnenten. Sie können Event Grid zum Zusammenstellen von Ereignissen für die Übermittlung konfigurieren, um die HTTP-Leistung in Szenarien mit hohen Durchsätzen zu verbessern. Die Batchverarbeitung ist standardmäßig deaktiviert und kann für einzelne Ereignisabonnements aktiviert werden.

Bei Verwendung von Event Hubs als Zielendpunkttyp verarbeitet Event Grid Ereignisse immer in Batches, um Effizienz und Leistung zu maximieren. Es gibt keine Batchrichtlinienkonfiguration, da Event Grid das Batchverarbeitungsverhalten bei der Übermittlung an Azure Event Hubs standardmäßig steuert.

Richtlinie für die Batchverarbeitung

Es gibt zwei Einstellungen für die Batchübermittlung:

  • Maximale Anzahl von Ereignissen pro Batch: Maximale Anzahl der Ereignisse, die Event Grid pro Batch übermittelt. Der Wert muss eine ganze Zahl zwischen 1 und 5.000 sein. Dieser Wert wird nie überschritten. Es können jedoch weniger Ereignisse übermittelt werden, wenn zum Zeitpunkt der Übermittlung keine weiteren Ereignisse verfügbar sind. Event Grid verzögert Ereignisse nicht, um einen Batch zu erstellen, wenn weniger Ereignisse verfügbar sind.
  • Bevorzugte Batchgröße in KB bezeichnet die Obergrenze für die Batchgröße in Kilobyte. Der Wert muss eine Zahl zwischen 1 und 1.024 sein. Ähnlich wie bei der maximalen Anzahl Ereignisse kann die Batchgröße kleiner sein, wenn zum Zeitpunkt der Übermittlung nicht genügend Ereignisse vorhanden sind. Es ist möglich, dass ein Batch die bevorzugte Batchgröße überschreitet, wenn ein einzelnes Ereignis größer als die bevorzugte Batchgröße ist. Wenn z. B. die bevorzugte Größe 4 KB ist und ein 10-KB-Ereignis an Event Grid gepusht werden soll, wird das 10-KB-Ereignis übermittelt und nicht verworfen.

Die Batchübermittlung wird pro Ereignisabonnement über das Portal, die Befehlszeilenschnittstelle, PowerShell oder SDKs konfiguriert.

Verhalten der Batchverarbeitung

  • Alle oder keine

    Event Grid baut auf einer Alle-oder-keine-Semantik auf. Ein teilweiser Erfolg einer Übermittlung im Batch wird nicht unterstützt. Abonnent*innen sollten darauf achten, nur so viele Ereignisse pro Batch anzufordern, wie Sie nach sinnvollem Ermessen in 30 Sekunden tatsächlich verarbeiten können.

  • Optimistische Batchverarbeitung

    Die Richtlinieneinstellungen für die Batchverarbeitung sind keine strengen Vorgaben für das Batchverarbeitungsverhalten, sie werden jeweils im Hinblick auf bestmögliche Leistung eingehalten. Bei niedrigen Ereignisraten werden Sie häufig feststellen, dass die Batchgröße unter der angeforderten maximalen Anzahl Ereignisse pro Batch liegt.

  • Standardwert ist AUS

    Standardmäßig fügt Event Grid jeder Übermittlungsanforderung nur ein Ereignis hinzu. Zum Aktivieren der Batchverarbeitung müssen Sie eine der in Batchverarbeitungsrichtlinie beschriebenen Einstellungen festlegen.

  • Standardwerte

    Beim Erstellen eines Ereignisabonnements müssen nicht beide Einstellungen („Maximale Anzahl von Ereignissen pro Batch“ und „Bevorzugte Batchgröße in KB“) angegeben werden. Wenn nur eine Einstellung festgelegt ist, verwendet Event Grid Standardwerte. In den folgenden Abschnitten finden Sie die Standardwerte und es wird beschrieben, wie dieser außer Kraft gesetzt werden können.

Azure-Portal

Diese Einstellungen werden auf der Registerkarte Zusätzliche Features auf der Seite Ereignisabonnement oder nach Erstellung des Ereignisabonnements über die Menüoption „Konfiguration“ beim Zugriff auf das Ereignisabonnement angezeigt.

Screenshot, der die Registerkarte „Zusätzliche Features“ der Seite „Ereignisabonnement“ mit hervorgehobenem Abschnitt „Batchverarbeitung“ zeigt.

„Unzustellbare Nachrichten“-Ereignisse

Wenn ein Ereignis innerhalb eines bestimmten Zeitraums oder nach einer bestimmten Anzahl von Übermittlungsversuchen nicht übermittelt werden kann, sendet Event Grid das Ereignis an ein Speicherkonto. Dieser Prozess wird als Speicherung unzustellbarer Nachrichten bezeichnet. Von Event Grid werden unzustellbare Nachrichten gespeichert, wenn eine der folgenden Bedingungen erfüllt ist.

  • Das Ereignis wird nicht innerhalb des Gültigkeitszeitraums (im Ereignisabonnement definierte Aufbewahrung) übermittelt.
  • Die Anzahl der Versuche hat den Grenzwert überschritten.

Wenn eine der beiden erfüllt ist, wird das Ereignis verworfen oder als unzustellbar gekennzeichnet. Die Speicherung unzustellbarer Nachrichten ist standardmäßig nicht aktiviert. Wenn Sie das Feature aktivieren möchten, müssen Sie bei der Erstellung des Ereignisabonnements ein Speicherkonto zum Speichern nicht übermittelter Ereignisse angeben. Sie müssen die Ereignisse aus diesem Speicherkonto lesen, um Übermittlungsprobleme zu beheben.

Event Grid sendet ein Ereignis an den Speicherort für unzustellbare Nachrichten, wenn alle Wiederholungsversuche ausgeführt wurden. Wenn Event Grid den Antwortcode 400 (Ungültige Anforderung) oder 413 (Anforderungsentität zu groß) empfängt, wird das Ereignis sofort für die Warteschlange für unzustellbare Nachrichten geplant. Diese Antwortcodes geben an, dass die Übermittlung des Ereignisses nie erfolgreich ausgeführt wird.

Der Ablauf der Gültigkeitsdauer wird ERST beim nächsten geplanten Übermittlungsversuch geprüft. Aus diesem Grund gilt Folgendes: Auch wenn die Gültigkeitsdauer vor dem nächsten geplanten Übermittlungsversuch abläuft, wird der Ablauf eines Ereignisses erst zum Zeitpunkt der nächsten Übermittlung überprüft. Anschließend wird das Ereignis als unzustellbar markiert.

Zwischen dem letzten Übermittlungsversuch eines Ereignisses und der Übermittlung an den Speicherort für unzustellbare Nachrichten gibt es eine fünfminütige Verzögerung. Diese Verzögerung dient dazu, die Anzahl der Blob Storage-Vorgänge zu reduzieren. Wenn der Speicherort für unzustellbare Nachrichten vier Stunden lang nicht verfügbar ist, wird das Ereignis gelöscht.

Wenn Sie den Speicherort für unzustellbare Nachrichten festlegen möchten, benötigen Sie ein Speicherkonto mit einem Container. Der Endpunkt für diesen Container wird bei der Erstellung des Ereignisabonnements angegeben. (Format des Endpunkts: /subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.Storage/storageAccounts/<storage-name>/blobServices/default/containers/<container-name>)

Es wird empfohlen, sich benachrichtigen zu lassen, wenn ein Ereignis an den Speicherort für unzustellbare Nachrichten gesendet wurde. Wenn Event Grid auf nicht übermittelte Ereignisse reagieren soll, erstellen Sie ein Ereignisabonnement für den Blobspeicher für unzustellbare Nachrichten. Sobald bei Ihrem Blobspeicher für unzustellbare Nachrichten ein nicht übermitteltes Ereignis eingeht, informiert Event Grid Ihren Handler. Der Handler reagiert mit den gewünschten Aktionen zur Abstimmung nicht übermittelter Ereignisse.

Wenn Sie unzustellbare Nachrichten konfigurieren, müssen Sie die verwaltete Identität der zugehörigen RBAC-Rolle (rollenbasierten Zugriffssteuerung) für das Azure Storage-Konto hinzufügen, in dem die unzustellbaren Ereignisse gespeichert werden. Weitere Informationen finden Sie unter Unterstützte Ziele und Azure-Rollen.

Übermittlungsereignisformate

In diesem Abschnitt finden Sie Beispiele für Ereignisse und unzustellbare Ereignisse mit dem CloudEvents 1.0-Schema, dem Format für Nachrichtenmetadaten, das in Namespacethemen unterstützt wird.

CloudEvents 1.0-Schema

Ereignis

{
    "id": "caee971c-3ca0-4254-8f99-1395b394588e",
    "source": "mysource",
    "dataversion": "1.0",
    "subject": "mySubject",
    "type": "fooEventType",
    "datacontenttype": "application/json",
    "data": {
        "prop1": "value1",
        "prop2": 5
    }
}

Ereignis für unzustellbare Nachrichten

[
  {
    "deadLetterProperties": {
      "deadletterreason": "Maximum delivery attempts was exceeded.",
      "deliveryattempts": 1,
      "deliveryresult": "Event was not acknowledged nor rejected.",
      "publishutc": "2023-11-01T20:33:51.4521467Z",
      "deliveryattemptutc": "2023-11-01T20:33:52.3692079Z"
    },
    "event": {
      "comexampleextension1": "value1",
      "id": "A234-1234-1234",
      "comexampleothervalue": "5",
      "datacontenttype": "text/xml",
      "specversion": "1.0",
      "time": "2018-04-05T17:31:00Z",
      "source": "/mycontext",
      "type": "com.example.someevent",
      "data": <your-event-data>
    }
  }
]

LastDeliveryOutcome: Probezeit

Event Grid legt für ein Ereignisabonnement eine Probezeit fest, wenn die Übermittlung von Ereignissen an das Ziel beginnen, Fehler auszulösen. Die Dauer der Probezeit unterscheidet sich je nach Fehler, der vom Zielendpunkt zurückgegeben wird. Bei Ereignisabonnements in der Probezeit können Ereignisse je nach Fehlercode, aufgrund dessen sie sich in der Probezeit befinden, als unzustellbar markiert oder gelöscht werden.

Fehler Dauer der Probezeit
Busy 10 Sekunden
NotFound 5 Minuten
SocketError 30 Sekunden
ResolutionError 5 Minuten
Disabled 5 Minuten
Vollständig 5 Minuten
TimedOut 10 Sekunden
Nicht autorisiert 5 Minuten
Verboten 5 Minuten
InvalidAzureFunctionDestination 10 Minuten

Hinweis

Event Grid verwendet die Probezeit zur Verbesserung der Übermittlungsverwaltung, weshalb sich die Dauer in Zukunft auch ändern kann.

Nachrichtenübermittlungsstatus

Event Grid verwendet HTTP-Antwortcodes zum Bestätigen des Eingangs von Ereignissen.

Erfolgscodes

Event Grid berücksichtigt nur die folgenden HTTP-Antwortcodes als erfolgreiche Übermittlungen. Alle anderen Statuscodes gelten als fehlerhafte Übermittlungen und werden entsprechend wiederholt oder als unzustellbar gekennzeichnet. Wenn Event Grid einen erfolgreichen Statuscode empfängt, wird die Übermittlung als abgeschlossen angesehen.

  • 200 – OK
  • 201 – Erstellt
  • 202 – Akzeptiert
  • 203 Keine Autorisierungsinformationen
  • 204 Kein Inhalt

Fehlercodes

Alle anderen Codes, die nicht zur obigen Gruppe (200–204) gehören, werden als Fehler angesehen, und es wird (bei Bedarf) ein neuer Versuch unternommen. Für einige gelten spezifische Wiederholungsrichtlinien, die im Folgenden beschrieben werden, alle anderen folgen dem standardmäßigen Wiederholungszeitplan. Es ist wichtig zu beachten, dass aufgrund der stark parallelisierten Architektur von Event Grid das Wiederholungsverhalten nicht deterministisch ist.

Statuscode Wiederholungsverhalten
400 – Ungültige Anforderung Nicht erneut versucht
401 – Nicht autorisiert Wiederholung nach fünf Minuten oder mehr für Azure-Ressourcenendpunkte
403 Verboten Nicht erneut versucht
404 – Nicht gefunden Wiederholung nach fünf Minuten oder mehr für Azure-Ressourcenendpunkte
408 Anforderungstimeout Wiederholen Sie den Vorgang nach mindestens 2 Minuten.
413 – Anforderungsentität zu groß Nicht erneut versucht
503 Dienst nicht verfügbar Wiederholen Sie den Vorgang nach mindestens 30 Sekunden.
Alle anderen Wiederholen Sie den Vorgang nach mindestens 10 Sekunden.

Benutzerdefinierte Übermittlungseigenschaften

Mit Ereignisabonnements können Sie HTTP-Header einrichten, die in übermittelte Ereignisse eingeschlossen werden. Diese Funktion ermöglicht es Ihnen, benutzerdefinierte Header festzulegen, die für ein Ziel erforderlich sind. Beim Erstellen eines Ereignisabonnements können bis zu zehn Header festgelegt werden. Die einzelnen Headerwert dürfen nicht größer als 4.096 Bytes (4K) sein. Sie können benutzerdefinierte Header für die Ereignisse festlegen, die an die folgenden Ziele übermittelt werden:

  • webhooks
  • Azure Event Hubs

Nächste Schritte