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 Nachrichten MY-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.

Screenshot: Konfiguration für unzustellbare Nachrichten für ein Ereignisabonnement

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.

Screenshot: Konfiguration für unzustellbare Nachrichten eines vorhandenen Ereignisabonnements

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.

Screenshot: Konfiguration der Konfiguration für die Wiederholungsrichtlinie eines Ereignisabonnements

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.

Screenshot: Konfiguration der Konfiguration für die Wiederholungsrichtlinie eines vorhandenen Ereignisabonnements

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