Dela via


Konfigurera plats för obeställbara meddelanden och återförsöksprincip

När du skapar en händelseprenumeration kan du anpassa inställningarna för händelseleverans. Den här artikeln visar hur du konfigurerar en obeställd plats och anpassar inställningarna för återförsök. Information om dessa funktioner finns i Leverans av Event Grid-meddelanden och försök igen.

Kommentar

Mer information om meddelandeleverans, återförsök och obeställbara meddelanden finns i den konceptuella artikeln: Leverans av Event Grid-meddelanden och försök igen.

Ange plats för obeställbara bokstäver

Om du vill ange en obeställd plats behöver du ett lagringskonto för att lagra händelser som inte kan levereras till en slutpunkt. Exemplen hämtar resurs-ID för ett befintligt lagringskonto. De skapar en händelseprenumeration som använder en container i lagringskontot för slutpunkten med obeställbara bokstäver.

Kommentar

  • Skapa ett lagringskonto och en blobcontainer i lagringen innan du kör kommandon i den här artikeln.
  • Event Grid-tjänsten skapar blobar i den här containern. Namnen på blobar har namnet på Event Grid-prenumerationen med alla bokstäver i versaler. Om namnet på prenumerationen till exempel är My-Blob-Subscriptionkommer namnen på de obeställbara blobarna att ha MY-BLOB-SUBSCRIPTION (myblobcontainer/MY-BLOB-SUBSCRIPTION/2019/8/8/5/111111111-1111-1111-1111-111111111111.json). Det här beteendet är att skydda mot skillnader i hantering mellan Azure-tjänster.
  • I exemplet ovan .../2019/8/8/5/... representerar det icke-noll vadderade datumet och timmen (UTC): .../YYYY/MM/DD/HH/....'
  • De blobbar med obeställbara bokstäver som skapas innehåller en eller flera händelser i en matris, vilket är ett viktigt beteende att tänka på när du bearbetar döda bokstäver.

Azure Portal

När du skapar en händelseprenumeration kan du aktivera obeställbara bokstäver på fliken Ytterligare funktioner enligt följande bild. När du har aktiverat funktionen anger du den blobcontainer som ska innehålla händelser med obeställbara bokstäver och den Azure-prenumeration som har bloblagringen.

Du kan också aktivera en systemtilldelad eller användartilldelad hanterad identitet för obeställbara bokstäver. Den hanterade identiteten måste vara medlem i en rollbaserad roll för åtkomstkontroll (RBAC) som gör det möjligt att skriva händelser till lagringen.

Skärmbild som visar konfigurationen av en händelseprenumeration med obeställbara bokstäver.

Du kan också aktivera obeställbara bokstäver och konfigurera inställningarna för en befintlig händelseprenumeration. På sidan Händelseprenumeration i din händelseprenumeration växlar du till fliken Ytterligare funktioner för att se inställningarna för obeställbara meddelanden enligt följande bild.

Skärmbild som visar konfigurationen av obeställbara meddelanden för en befintlig händelseprenumeration.

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

Om du vill inaktivera obeställbara bokstäver kör du kommandot igen för att skapa händelseprenumerationen men ange inget värde för deadletter-endpoint. Du behöver inte ta bort händelseprenumerationen.

Kommentar

Om du använder Azure CLI på din lokala dator ska du använda Azure CLI version 2.0.56 eller större. Anvisningar om hur du installerar den senaste versionen av Azure CLI finns i Installera 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"

Om du vill inaktivera obeställbara bokstäver kör du kommandot igen för att skapa händelseprenumerationen men ange inget värde för DeadLetterEndpoint. Du behöver inte ta bort händelseprenumerationen.

Kommentar

Om du använder Azure PowerShell på din lokala dator använder du Azure PowerShell version 1.1.0 eller senare. Ladda ned och installera den senaste Azure PowerShell från Azure-nedladdningar.

Ange återförsöksprincip

När du skapar en Event Grid-prenumeration kan du ange värden för hur länge Event Grid ska försöka leverera händelsen. Som standard försöker Event Grid i 24 timmar (1 440 minuter) eller 30 gånger. Du kan ange något av dessa värden för din Event Grid-prenumeration. Värdet för händelsetid till live måste vara ett heltal från 1 till 1440. Värdet för maximala återförsök måste vara ett heltal från 1 till 30.

Du kan inte konfigurera återförsöksschemat.

Azure Portal

När du skapar en händelseprenumeration kan du konfigurera principinställningar för återförsök på fliken Ytterligare funktioner .

Skärmbild som visar konfigurationen av återförsöksprincipen för en händelseprenumeration.

Du kan också konfigurera principinställningar för återförsök för en befintlig händelseprenumeration. På sidan Händelseprenumeration i din händelseprenumeration växlar du till fliken Ytterligare funktioner för att se principinställningarna för återförsök enligt följande bild.

Skärmbild som visar återförsöksprincipkonfigurationen för en befintlig händelseprenumeration.

Azure CLI

Om du vill ange händelsens time-to-live till ett annat värde än 1440 minuter använder du:

az eventgrid event-subscription create \
  -g gridResourceGroup \
  --topic-name <topic_name> \
  --name <event_subscription_name> \
  --endpoint <endpoint_URL> \
  --event-ttl 720

Om du vill ange maximalt antal återförsök till ett annat värde än 30 använder du:

az eventgrid event-subscription create \
  -g gridResourceGroup \
  --topic-name <topic_name> \
  --name <event_subscription_name> \
  --endpoint <endpoint_URL> \
  --max-delivery-attempts 18

Kommentar

Om du anger både event-ttl och max-deliver-attemptsanvänder Event Grid den första för att upphöra att gälla för att avgöra när händelseleveransen ska stoppas. Om du till exempel anger 30 minuter som TTL (time-to-live) och 5 maximala leveransförsök. När en händelse inte levereras efter 30 minuter (eller) inte levereras efter 5 försök, beroende på vilket som inträffar först, är händelsen obeställd. Om du anger maximalt antal leveransförsök till 10, med avseende på exponentiellt återförsöksschema, kommer maximalt 6 antal leveransförsök att ske innan 30 minuter TTL uppnås, och därför kommer maximalt antal försök att vara 10 inte att påverkas i det här fallet och händelserna kommer att vara obemärkta efter 30 minuter.

PowerShell

Om du vill ange händelsens time-to-live till ett annat värde än 1440 minuter använder du:

$topicid = (Get-AzEventGridTopic -ResourceGroupName gridResourceGroup -Name demoTopic).Id

New-AzEventGridSubscription `
  -ResourceId $topicid `
  -EventSubscriptionName <event_subscription_name> `
  -Endpoint <endpoint_URL> `
  -EventTtl 720

Om du vill ange maximalt antal återförsök till ett annat värde än 30 använder du:

$topicid = (Get-AzEventGridTopic -ResourceGroupName gridResourceGroup -Name demoTopic).Id

New-AzEventGridSubscription `
  -ResourceId $topicid `
  -EventSubscriptionName <event_subscription_name> `
  -Endpoint <endpoint_URL> `
  -MaxDeliveryAttempt 18

Kommentar

Om du anger både event-ttl och max-deliver-attemptsanvänder Event Grid den första för att upphöra att gälla för att avgöra när händelseleveransen ska stoppas. Om du till exempel anger 30 minuter som TTL (time-to-live) och 5 maximala leveransförsök. När en händelse inte levereras efter 30 minuter (eller) inte levereras efter 5 försök, beroende på vilket som inträffar först, är händelsen obeställd. Om du anger maximalt antal leveransförsök till 10, med avseende på exponentiellt återförsöksschema, kommer maximalt 6 antal leveransförsök att ske innan 30 minuter TTL uppnås, och därför kommer maximalt antal försök att vara 10 inte att påverkas i det här fallet och händelserna kommer att vara obemärkta efter 30 minuter.

Nästa steg