Configurare code e argomenti del bus di servizio come gestori per gli eventi di Griglia di eventi di Azure

Griglia di eventi di Azure supporta architetture orientate agli eventi instradando gli eventi dalle sorgenti ai gestori. Questo articolo descrive come configurare le code e gli argomenti del bus di servizio di Azure come gestori di eventi per la griglia eventi. Configuri la coda o l'argomento per elaborare gli eventi nelle applicazioni aziendali utilizzando il portale Azure, interfaccia della riga di comando di Azure, Azure PowerShell o l'API REST.

Prerequisiti

Code del bus di servizio

Indirizzare eventi in Griglia di eventi direttamente a code del bus di servizio per l'uso nel buffering o negli scenari di controllo e comando nelle applicazioni aziendali.

Configura una coda bus di servizio utilizzando il portale Azure

Nel portale Azure, mentre crei un abbonamento evento, seleziona bus di servizio Queue come tipo di endpoint, e poi seleziona Seleziona un endpoint per scegliere una coda bus di servizio.

Schermata della configurazione di una coda di bus di servizio come gestore di eventi in Griglia di eventi di Azure.

Nota

Se si usa una coda abilitata per la sessione o una sottoscrizione dell'argomento come destinazione, impostare la proprietà di sessione sull'evento utilizzando una proprietà di distribuzione con il nome di intestazione SessionId.

Configura una coda bus di servizio usando la interfaccia della riga di comando di Azure

Usare il az eventgrid event-subscription createcomando con --endpoint-type impostato su servicebusqueue e --endpoint impostato su /subscriptions/{AZURE SUBSCRIPTION}/resourceGroups/<RESOURCE GROUP NAME>/providers/Microsoft.ServiceBus/namespaces/<NAMESPACE NAME>/queues/<QUEUE NAME>. Ecco un esempio:

az eventgrid event-subscription create \
    --name <my-event-subscription> \
    --source-resource-id /subscriptions/{SubID}/resourceGroups/{RG}/providers/Microsoft.EventGrid/topics/topic1 \
    --endpoint-type servicebusqueue \
    --endpoint /subscriptions/{SubID}/resourceGroups/TestRG/providers/Microsoft.ServiceBus/namespaces/ns1/queues/queue1

È anche possibile usare il comando az eventgrid topic event-subscription per argomenti personalizzati, il comando az eventgrid system-topic event-subscription per gli argomenti di sistema e il comando az eventgrid partner topic event-subscription create per gli argomenti dei partner.

Configura una coda bus di servizio usando Azure PowerShell

Usare il comando New-AzEventGridSubscription con -EndpointType impostato su servicebusqueue e -Endpoint impostato su /subscriptions/{AZURE SUBSCRIPTION}/resourceGroups/<RESOURCE GROUP NAME>/providers/Microsoft.ServiceBus/namespaces/<NAMESPACE NAME>/queues/<QUEUE NAME>. Ecco un esempio:

New-AzEventGridSubscription -ResourceGroup MyResourceGroup `
            -TopicName Topic1 `
            -EndpointType servicebusqueue `
            -Endpoint /subscriptions/{SubID}/resourceGroups/TestRG/providers/Microsoft.ServiceBus/namespaces/ns1/queues/queue1 `
            -EventSubscriptionName EventSubscription1

È anche possibile usare il comando New-AzEventGridSystemTopicEventSubscription per gli argomenti di sistema e il comando New-AzEventGridPartnerTopicEventSubscription per gli argomenti dei partner.

Argomenti del bus di servizio

Instradare gli eventi in Event Grid direttamente agli argomenti del bus di servizio per scenari di messaggistica di comando e controllo.

Configura un argomento bus di servizio utilizzando il portale Azure

Nel portale Azure, mentre crei un abbonamento a un evento, seleziona bus di servizio Topic come tipo di endpoint, e poi seleziona Select a endpoint per scegliere un topic bus di servizio.

Screenshot della configurazione di un argomento bus di servizio come gestore di eventi in Griglia di eventi di Azure.

Configura un argomento bus di servizio utilizzando la interfaccia della riga di comando di Azure

Usare il az eventgrid event-subscription createcomando con --endpoint-type impostato su servicebustopic e --endpoint impostato su /subscriptions/{AZURE SUBSCRIPTION}/resourceGroups/<RESOURCE GROUP NAME>/providers/Microsoft.ServiceBus/namespaces/<NAMESPACE NAME>/topics/<TOPIC NAME>. Ecco un esempio:

az eventgrid event-subscription create \
    --name <my-event-subscription> \
    --source-resource-id /subscriptions/{SubID}/resourceGroups/{RG}/providers/Microsoft.EventGrid/topics/topic1 \
    --endpoint-type servicebustopic \
    --endpoint /subscriptions/{SubID}/resourceGroups/TestRG/providers/Microsoft.ServiceBus/namespaces/ns1/topics/topic1

È anche possibile usare il comando az eventgrid topic event-subscription per argomenti personalizzati, il comando az eventgrid system-topic event-subscription per gli argomenti di sistema e il comando az eventgrid partner topic event-subscription create per gli argomenti dei partner.

Configura un argomento bus di servizio usando Azure PowerShell

Usare il comando New-AzEventGridSubscription con -EndpointType impostato su servicebustopic e -Endpoint impostato su /subscriptions/{AZURE SUBSCRIPTION}/resourceGroups/<RESOURCE GROUP NAME>/providers/Microsoft.ServiceBus/namespaces/<NAMESPACE NAME>/topics/<TOPIC NAME>. Ecco un esempio:

New-AzEventGridSubscription -ResourceGroup MyResourceGroup `
            -TopicName Topic1 `
            -EndpointType servicebustopic `
            -Endpoint /subscriptions/{SubID}/resourceGroups/TestRG/providers/Microsoft.ServiceBus/namespaces/ns1/topics/topic1 `
            -EventSubscriptionName EventSubscription1

È anche possibile usare il comando New-AzEventGridSystemTopicEventSubscription per gli argomenti di sistema e il comando New-AzEventGridPartnerTopicEventSubscription per gli argomenti dei partner.

Intestazioni del messaggio

Queste sono le proprietà ricevute nelle intestazioni del messaggio:

Nome della proprietà Descrizione
aeg-subscription-name Nome della sottoscrizione dell'evento.
aeg-delivery-count Numero di tentativi effettuati per l'evento.
aeg-event-type

Tipo dell'evento.

Può essere uno dei valori seguenti:

  • Convalida dell'abbonamento
  • Notifica
  • Eliminazione della sottoscrizione
aeg-metadata-version

Versione dei metadati relativa all'evento.

Per lo schema eventi di Event Grid, questa proprietà rappresenta la versione dei metadati, mentre per lo schema CloudEvents rappresenta la versione della specifica.

aeg-data-version

Versione dati dell'evento.

Per lo schema di eventi di Griglia di eventi, questa proprietà rappresenta la versione dei dati e per lo schema di eventi cloud non è applicabile.

aeg-output-event-id ID dell'evento di Griglia di eventi.

Quando si invia un evento a una coda o a un argomento del bus di servizio Bus come messaggio negoziato, l'elemento messageid del messaggio negoziato corrisponde a un ID sistema interno.

L'ID di sistema interno del messaggio persiste durante la riconsegna dell'evento, così da evitare consegne duplicate attivando il rilevamento dei duplicati sull'entità bus di servizio. Impostare la durata di rilevamento dei duplicati nell'entità bus di servizio sulla durata (TTL) dell'evento oppure sulla durata massima dei nuovi tentativi, a seconda di quale valore sia maggiore.

Proprietà di consegna

Quando usi abbonamenti agli eventi, puoi impostare le intestazioni HTTP da includere negli eventi consegnati. Questa funzionalità supporta l'impostazione di header personalizzate richieste dalla destinazione. Si possono impostare intestazioni personalizzate sugli eventi inviati alle code e agli argomenti del bus di servizio di Azure.

bus di servizio di Azure supporta le seguenti proprietà dei messaggi quando invii messaggi singoli.

Nome dell'intestazione Tipo di intestazione
MessageId Dinamico
PartitionKey Statico o dinamico
SessionId Statico o dinamico
CorrelationId Statico o dinamico
Label Statico o dinamico
ReplyTo Statico o dinamico
ReplyToSessionId Statico o dinamico
To Statico o dinamico
ViaPartitionKey Statico o dinamico

Nota

  • Il valore predefinito di MessageId è l'ID interno dell'evento di Griglia di eventi. È possibile eseguirne l'override. Ad esempio, usare data.field.
  • È possibile impostare solo SessionId o MessageId.

Per altre informazioni, vedere Proprietà di recapito personalizzate.

Esempi REST (di PUT)

coda del bus di servizio

{
    "properties": 
    {
        "destination": 
        {
			"endpointType": "ServiceBusQueue",
            "properties": 
            {
				"resourceId": "/subscriptions/<AZURE SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP NAME>/providers/Microsoft.ServiceBus/namespaces/<SERVICE BUS NAMESPACE NAME>/queues/<SERVICE BUS QUEUE NAME>"
			}
		},
		"eventDeliverySchema": "EventGridSchema"
	}
}

Coda del bus di servizio: recapito con identità gestita

{
	"properties": {
        "deliveryWithResourceIdentity": 
        {
            "identity": 
            {
				"type": "SystemAssigned"
			},
            "destination": 
            {
				"endpointType": "ServiceBusQueue",
                "properties": 
                {
					"resourceId": "/subscriptions/<AZURE SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP NAME>/providers/Microsoft.ServiceBus/namespaces/<SERVICE BUS NAMESPACE NAME>/queues/<SERVICE BUS QUEUE NAME>"
				}
			}
		},
		"eventDeliverySchema": "EventGridSchema"
	}
}

Argomento del bus di servizio

{
    "properties": 
    {
        "destination": 
        {
			"endpointType": "ServiceBusTopic",
            "properties": 
            {
				"resourceId": "/subscriptions/<AZURE SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP NAME>/providers/Microsoft.ServiceBus/namespaces/<SERVICE BUS NAMESPACE NAME>/topics/<SERVICE BUS TOPIC NAME>"
			}
		},
		"eventDeliverySchema": "EventGridSchema"
	}
}

Argomento del bus di servizio: recapito con identità gestita

{
    "properties": 
    {
        "deliveryWithResourceIdentity": 
        {
            "identity": 
            {
				"type": "SystemAssigned"
			},
            "destination": 
            {
				"endpointType": "ServiceBusTopic",
                "properties": 
                {
					"resourceId": "/subscriptions/<AZURE SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP NAME>/providers/Microsoft.ServiceBus/namespaces/<SERVICE BUS NAMESPACE NAME>/topics/<SERVICE BUS TOPIC NAME>"
				}
			}
		},
		"eventDeliverySchema": "EventGridSchema"
	}
}

Nota

Quando si verifica un failover per uno spazio dei nomi di bus di servizio con Geo-Disaster Recovery abilitato, lo spazio dei nomi secondario non emette eventi a Event Grid. Devi aggiungere manualmente l'abbonamento Event Grid per il namespace secondario.

Per un elenco di gestori di eventi supportati, vedi l'articolo Gestori di eventi .