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.
„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