Festlegen eines Speicherorts und einer Wiederholungsrichtlinie für unzustellbare Nachrichten
Bei der Erstellung von Ereignisabonnements können Sie die Einstellungen für die Ereignisübermittlung anpassen. In diesem Artikel wird erläutert, wie Sie einen Speicherort für unzustellbare Nachrichten einrichten und die Wiederholungseinstellungen anpassen. Informationen zu diesen Features finden Sie unter Event Grid – Übermittlung und Wiederholung von Nachrichten.
Hinweis
Informationen zur Nachrichtenübermittlung, Wiederholungsversuchen und unzustellbaren Nachrichten finden Sie im folgenden Konzeptartikel: Event Grid – Übermittlung und Wiederholung von Nachrichten
Festlegen eines Speicherorts für unzustellbare Nachrichten
Zum Festlegen eines Speicherorts für unzustellbare Nachrichten benötigen Sie ein Speicherkonto für Ereignisse, die nicht an einen Endpunkt übermittelt werden können. Die Beispiele erhalten die Ressourcen-ID eines vorhandenen Speicherkontos. Sie erstellen ein Ereignisabonnement, das einen Container in diesem Speicherkonto als Endpunkt für unzustellbare Nachrichten verwendet.
Hinweis
- Erstellen Sie im Speicher ein Speicherkonto und einen Blobcontainer, bevor Sie die Befehle in diesem Artikel ausführen.
- Der Event Grid-Dienst erstellt Blobs in diesem Container. Die Namen der Blobs enthalten den Namen des Event Grid-Abonnements mit allen Buchstaben in Großbuchstaben. Wenn beispielsweise der Name des Abonnements
My-Blob-Subscription
lautet, enthalten die Namen der Blobs für unzustellbare NachrichtenMY-BLOB-SUBSCRIPTION
(myblobcontainer/MY-BLOB-SUBSCRIPTION/2019/8/8/5/111111111-1111-1111-1111-111111111111.json
). Dies dient dem Schutz vor Problemen durch Unterschiede bei der Behandlung der Groß-/Kleinschreibung von Azure-Diensten. - Im Beispiel oben stellt
.../2019/8/8/5/...
das nicht mit Nullen aufgefüllte Datum und die Stunde (UTC) dar:.../YYYY/MM/DD/HH/...
. - Die erstellten Blobs für unzustellbare Nachrichten enthalten mindestens ein Ereignis in einem Array. Dies ist ein wichtiges Verhalten, das bei der Verarbeitung von unzustellbaren Nachrichten zu berücksichtigen ist.
Azure-Portal
Beim Erstellen eines Ereignisabonnements können Sie unzustellbare Nachrichten auf der Registerkarte Zusätzliche Features wie in der folgenden Abbildung aktivieren. Nachdem Sie das Feature aktiviert haben, geben Sie den Blobcontainer an, der Ereignisse mit unzustellbaren Nachrichten enthält, und das Azure-Abonnement, das über den Blobspeicher verfügt.
Optional können Sie eine systemseitig oder benutzerseitig zugewiesene verwaltete Identität für unzustellbare Nachrichten aktivieren. Die verwaltete Identität muss Mitglied einer Rolle für die rollenbasierte Zugriffssteuerung (Role-Based Access Control, RBAC) sein, die das Schreiben von Ereignissen in den Speicher ermöglicht.
Sie können auch unzustellbare Nachrichten aktivieren und die Einstellungen für ein vorhandenes Ereignisabonnement konfigurieren. Wechseln Sie auf der Seite Ereignisabonnement Ihres Ereignisabonnements zur Registerkarte Zusätzliche Features, um wie in der folgenden Abbildung die Einstellungen für unzustellbare Nachrichten anzuzeigen.
Azure CLI
containername=testcontainer
topicid=$(az eventgrid topic show --name demoTopic -g gridResourceGroup --query id --output tsv)
storageid=$(az storage account show --name demoStorage --resource-group gridResourceGroup --query id --output tsv)
az eventgrid event-subscription create \
--source-resource-id $topicid \
--name <event_subscription_name> \
--endpoint <endpoint_URL> \
--deadletter-endpoint $storageid/blobServices/default/containers/$containername
Um unzustellbare Nachrichten zu deaktivieren, führen Sie den Befehl zum Erstellen des Ereignisabonnements erneut aus, aber geben Sie keinen Wert für deadletter-endpoint
an. Sie müssen das Ereignisabonnement nicht löschen.
Hinweis
Wenn Sie die Azure CLI auf Ihrem lokalen Computer nutzen, verwenden Sie mindestens Version 2.0.56. Anweisungen zum Installieren der aktuellen Version der Azure CLI finden Sie unter Installieren der Azure CLI.
PowerShell
$containername = "testcontainer"
$topicid = (Get-AzEventGridTopic -ResourceGroupName gridResourceGroup -Name demoTopic).Id
$storageid = (Get-AzStorageAccount -ResourceGroupName gridResourceGroup -Name demostorage).Id
New-AzEventGridSubscription `
-ResourceId $topicid `
-EventSubscriptionName <event_subscription_name> `
-Endpoint <endpoint_URL> `
-DeadLetterEndpoint "$storageid/blobServices/default/containers/$containername"
Um unzustellbare Nachrichten zu deaktivieren, führen Sie den Befehl zum Erstellen des Ereignisabonnements erneut aus, aber geben Sie keinen Wert für DeadLetterEndpoint
an. Sie müssen das Ereignisabonnement nicht löschen.
Hinweis
Wenn Sie Azure PowerShell auf Ihrem lokalen Computer nutzen, verwenden Sie mindestens Version 1.1.0. Laden Sie die aktuelle Version von Azure PowerShell von der Azure-Downloadseite herunter, und installieren Sie sie.
Festlegen der Wiederholungsrichtlinie
Bei der Erstellung eines Event Grid-Abonnements können Sie festlegen, wie lange Event Grid versuchen soll, das Ereignis zu übermitteln. Standardmäßig versucht es Event Grid für 24 Stunden (1.440 Minuten) oder 30-mal. Sie können diese Werte für Ihr Event Grid-Abonnement festlegen. Der Wert für die Ereignisgültigkeitsdauer muss eine ganze Zahl zwischen 1 und 1440 sein. Der Wert für die maximalen Versuche muss ein Integer zwischen 1 und 30 sein.
Sie können den Wiederholungszeitplan nicht konfigurieren.
Azure-Portal
Beim Erstellen eines Ereignisabonnements können Sie die Einstellungen für Wiederholungsrichtlinien auf der Registerkarte Zusätzliche Features konfigurieren.
Sie können auch Wiederholungsrichtlinieneinstellungen für ein vorhandenes Ereignisabonnement konfigurieren. Wechseln Sie auf der Seite Ereignisabonnement Ihres Ereignisabonnements zur Registerkarte Zusätzliche Features, um wie in der folgenden Abbildung die Einstellungen für die Wiederholungsrichtlinie anzuzeigen.
Azure CLI
So legen Sie die auf 1440 Minuten festgelegte Ereignislebensdauer auf einen anderen Wert fest:
az eventgrid event-subscription create \
-g gridResourceGroup \
--topic-name <topic_name> \
--name <event_subscription_name> \
--endpoint <endpoint_URL> \
--event-ttl 720
Um die maximale Anzahl von Wiederholungsversuchen auf einen anderen Wert als 30 festzulegen, verwenden Sie Folgendes:
az eventgrid event-subscription create \
-g gridResourceGroup \
--topic-name <topic_name> \
--name <event_subscription_name> \
--endpoint <endpoint_URL> \
--max-delivery-attempts 18
Hinweis
Wenn Sie sowohl event-ttl
als auch max-deliver-attempts
festlegen, verwendet Event Grid den zuerst ablaufenden Wert, um zu ermitteln, wann die Ereignisübermittlung beendet werden soll. Angenommen, Sie legen einen TTL-Wert (Time to Live) von 30 Minuten und maximal 5 Zustellversuche fest. Wenn ein Ereignis nach 30 Minuten (oder) nach 5 Versuchen nicht zugestellt wurde (je nachdem, welcher Fall zuerst eintritt), wird das Ereignis als unzustellbar eingestuft. Wenn Sie die maximale Anzahl von Zustellversuchen auf 10 festlegen, treten in Bezug auf den exponentiellen Wiederholungszeitplan maximal 6 Zustellversuche auf, bevor die TTL von 30 Minuten erreicht wird. Daher hat das Festlegen der maximalen Anzahl von Versuchen auf 10 in diesem Fall keine Auswirkungen, und Ereignisse werden nach 30 Minuten als unzustellbar eingestuft.
PowerShell
So legen Sie die auf 1440 Minuten festgelegte Ereignislebensdauer auf einen anderen Wert fest:
$topicid = (Get-AzEventGridTopic -ResourceGroupName gridResourceGroup -Name demoTopic).Id
New-AzEventGridSubscription `
-ResourceId $topicid `
-EventSubscriptionName <event_subscription_name> `
-Endpoint <endpoint_URL> `
-EventTtl 720
Um die maximale Anzahl von Wiederholungsversuchen auf einen anderen Wert als 30 festzulegen, verwenden Sie Folgendes:
$topicid = (Get-AzEventGridTopic -ResourceGroupName gridResourceGroup -Name demoTopic).Id
New-AzEventGridSubscription `
-ResourceId $topicid `
-EventSubscriptionName <event_subscription_name> `
-Endpoint <endpoint_URL> `
-MaxDeliveryAttempt 18
Hinweis
Wenn Sie sowohl event-ttl
als auch max-deliver-attempts
festlegen, verwendet Event Grid den zuerst ablaufenden Wert, um zu ermitteln, wann die Ereignisübermittlung beendet werden soll. Angenommen, Sie legen einen TTL-Wert (Time to Live) von 30 Minuten und maximal 5 Zustellversuche fest. Wenn ein Ereignis nach 30 Minuten (oder) nach 5 Versuchen nicht zugestellt wurde (je nachdem, welcher Fall zuerst eintritt), wird das Ereignis als unzustellbar eingestuft. Wenn Sie die maximale Anzahl von Zustellversuchen auf 10 festlegen, treten in Bezug auf den exponentiellen Wiederholungszeitplan maximal 6 Zustellversuche auf, bevor die TTL von 30 Minuten erreicht wird. Daher hat das Festlegen der maximalen Anzahl von Versuchen auf 10 in diesem Fall keine Auswirkungen, und Ereignisse werden nach 30 Minuten als unzustellbar eingestuft.
Nächste Schritte
- Eine Beispielanwendung, die eine Azure-Funktions-App zum Verarbeiten von Ereignissen im Zusammenhang mit unzustellbaren Nachrichten verwendet, finden Sie unter Azure Event Grid Dead Letter Samples for .NET (Azure Event Grid-Beispiele für unzustellbare Nachrichten für .NET).
- Informationen zu Ereignisübermittlungen und Wiederholungen finden Sie unter Event Grid – Übermittlung und Wiederholung von Nachrichten.
- Eine Einführung in Event Grid finden Sie unter Informationen zu Event Grid.
- Um sich schnell mit der Verwendung von Event Grid vertraut zu machen, lesen Sie Erstellen und Weiterleiten benutzerdefinierter Ereignisse mit Azure Event Grid.