Impostare la posizione degli eventi non recapitabili e i criteri di ripetizione

Quando si crea una sottoscrizione di eventi, è possibile personalizzare le impostazioni per il recapito di tali eventi. Questo articolo illustra come configurare una posizione per gli eventi non recapitabili e personalizzare le impostazioni di ripetizione dei tentativi. Per informazioni su queste funzionalità, vedere Recapito di messaggi di Griglia di eventi e nuovi tentativi.

Nota

Per informazioni sul recapito dei messaggi, sui tentativi e sui messaggi non recapitabili, vedere l'articolo concettuale: Recapito e ripetizione dei messaggi di Griglia di eventi.

Impostare la posizione degli eventi non recapitabili

Per impostare una posizione per gli eventi non recapitabili, è necessario un account di archiviazione per contenere gli eventi che non possono essere recapitati a un endpoint. Gli esempi ricevono l'ID di risorsa da un account di archiviazione esistente. Creano una sottoscrizione evento che usa un contenitore in tale account di archiviazione per l'endpoint di messaggi non recapitabili.

Nota

  • Creare un account di archiviazione e un contenitore BLOB nella risorsa di archiviazione prima di eseguire i comandi in questo articolo.
  • Il servizio Griglia di eventi crea BLOB in questo contenitore. I nomi dei BLOB avranno il nome della sottoscrizione di Griglia di eventi con tutte le lettere maiuscole. Ad esempio, se il nome della sottoscrizione è My-Blob-Subscription, i nomi dei BLOB dei messaggi non recapitabili avranno MY-BLOB-SUBSCRIPTION (myblobcontainer/MY-BLOB-SUBSCRIPTION/2019/8/8/5/111111111-1111-1111-1111-111111111111.json). Questo comportamento consiste nel proteggersi dalle differenze nella gestione dei casi tra i servizi di Azure.
  • Nell'esempio .../2019/8/8/5/... precedente rappresenta la data e l'ora (UTC) non pari a zero: .../YYYY/MM/DD/HH/....'
  • I BLOB di messaggi non recapitabili creati conterranno uno o più eventi in una matrice, un comportamento importante da considerare durante l'elaborazione di lettere non recapitabili.

Portale di Azure

Durante la creazione di una sottoscrizione di eventi, è possibile abilitare l'inserimento di messaggi non recapitabili nella scheda Funzionalità aggiuntive , come illustrato nell'immagine seguente. Dopo aver abilitato la funzionalità, specificare il contenitore BLOB che conterrà eventi non recapitabili e la sottoscrizione di Azure con l'archiviazione BLOB.

Facoltativamente, è possibile abilitare un'identità gestita assegnata dal sistema o assegnata dall'utente per l'inserimento di messaggi non recapitabili. L'identità gestita deve essere membro di un ruolo controllo degli accessi in base al ruolo che consente di scrivere eventi nell'archiviazione.

Screenshot che mostra la configurazione dei messaggi non recapitabili di una sottoscrizione di eventi.

È anche possibile abilitare il blocco dei messaggi non recapitabili e configurare le impostazioni per una sottoscrizione di eventi esistente. Nella pagina Sottoscrizione eventi della sottoscrizione di eventi passare alla scheda Funzionalità aggiuntive per visualizzare le impostazioni dei messaggi non recapitabili, come illustrato nell'immagine seguente.

Screenshot che mostra la configurazione dei messaggi non recapitabili di una sottoscrizione di eventi esistente.

Interfaccia della riga di comando di Azure

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

Per disabilitare gli eventi non recapitabili, rieseguire il comando per creare la sottoscrizione di eventi ma non specificare un valore per deadletter-endpoint. Non è necessario eliminare la sottoscrizione di eventi.

Nota

Se si usa l'interfaccia della riga di comando di Azure nel computer locale, usare l'interfaccia della riga di comando di Azure versione 2.0.56 o successive. Per istruzioni sull'installazione della versione più recente dell'interfaccia della riga di comando di Azure, vedere Installare l'interfaccia della riga di comando di Azure.

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"

Per disabilitare gli eventi non recapitabili, rieseguire il comando per creare la sottoscrizione di eventi ma non specificare un valore per DeadLetterEndpoint. Non è necessario eliminare la sottoscrizione di eventi.

Nota

Se si usa Azure PowerShell sul computer locale, usare Azure PowerShell versione 1.1.0 o successive. Scaricare e installare la versione di Azure PowerShell più recente da Download di Azure.

Impostare criteri di ripetizione

Quando si crea una sottoscrizione di Griglia di eventi, è possibile impostare valori per l'intervallo di tempo in cui il servizio deve provare a recapitare l'evento. Per impostazione predefinita, la Griglia di eventi effettua tentativi per 24 ore (1.440 minuti) o 30 volte. È possibile impostare uno di questi valori per la sottoscrizione di Griglia di eventi. Il valore di time-to-live degli eventi deve essere un numero intero compreso tra 1 e 1440. Il valore relativo al numero massimo di tentativi deve essere un numero intero compreso tra 1 e 30.

Non è possibile configurare la pianificazione della ripetizione.

Portale di Azure

Durante la creazione di una sottoscrizione di eventi, è possibile configurare le impostazioni dei criteri di ripetizione dei tentativi nella scheda Funzionalità aggiuntive .

Screenshot che mostra la configurazione dei criteri di ripetizione dei tentativi di una sottoscrizione di eventi.

È anche possibile configurare le impostazioni dei criteri di ripetizione dei tentativi per una sottoscrizione di eventi esistente. Nella pagina Sottoscrizione eventi della sottoscrizione di eventi passare alla scheda Funzionalità aggiuntive per visualizzare le impostazioni dei criteri di ripetizione dei tentativi, come illustrato nell'immagine seguente.

Screenshot che mostra la configurazione dei criteri di ripetizione dei tentativi di una sottoscrizione di eventi esistente.

Interfaccia della riga di comando di Azure

Per impostare la durata TTL dell'evento su un valore diverso da 1440 minuti, usare il codice seguente:

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

Per impostare il numero massimo di tentativi su un valore diverso da 30, usare:

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

Nota

Se si impostano entrambi event-ttl e max-deliver-attempts, la Griglia di eventi usa quello che scade per primo per stabilire quando interrompere la consegna dell'evento. Ad esempio, se si impostano 30 minuti come durata (TTL) e 5 tentativi di recapito massimo. Quando un evento non viene recapitato dopo 30 minuti (o) non viene recapitato dopo 5 tentativi, a seconda di quale evento si verifichi per primo, l'evento viene recapitato senza messaggi non recapitabili. Se si imposta il numero massimo di tentativi di recapito su 10, in relazione alla pianificazione esponenziale dei tentativi, verrà raggiunto il numero massimo di tentativi di recapito prima di 30 minuti, pertanto l'impostazione del numero massimo di tentativi su 10 non avrà alcun impatto in questo caso e gli eventi verranno recapitati senza messaggi non recapitabili dopo 30 minuti.

PowerShell

Per impostare la durata TTL dell'evento su un valore diverso da 1440 minuti, usare il codice seguente:

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

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

Per impostare il numero massimo di tentativi su un valore diverso da 30, usare:

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

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

Nota

Se si impostano entrambi event-ttl e max-deliver-attempts, la Griglia di eventi usa quello che scade per primo per stabilire quando interrompere la consegna dell'evento. Ad esempio, se si impostano 30 minuti come durata (TTL) e 5 tentativi di recapito massimo. Quando un evento non viene recapitato dopo 30 minuti (o) non viene recapitato dopo 5 tentativi, a seconda di quale evento si verifichi per primo, l'evento viene recapitato senza messaggi non recapitabili. Se si imposta il numero massimo di tentativi di recapito su 10, in relazione alla pianificazione esponenziale dei tentativi, verrà raggiunto il numero massimo di tentativi di recapito prima di 30 minuti, pertanto l'impostazione del numero massimo di tentativi su 10 non avrà alcun impatto in questo caso e gli eventi verranno recapitati senza messaggi non recapitabili dopo 30 minuti.

Passaggi successivi