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

Un gestore eventi riceve eventi da un'origine evento tramite Griglia di eventi ed elabora tali eventi. È possibile usare istanze di alcuni servizi di Azure per gestire gli eventi e bus di servizio di Azure è uno di essi. Questo articolo illustra come usare una coda o un argomento bus di servizio come gestore per gli eventi di Griglia di eventi.

Code del bus di servizio

È possibile instradare gli eventi in Griglia di eventi direttamente alle code di bus di servizio da usare in scenari di buffering o comando e controllo nelle applicazioni aziendali.

Usare il portale di Azure

Nella portale di Azure, durante la creazione di una sottoscrizione di eventi, selezionare bus di servizio Coda come tipo di endpoint e quindi fare clic su seleziona un endpoint per scegliere una coda bus di servizio.

Screenshot showing the configuration of a Service Bus queue handler.

Nota

Le code abilitate per la sessione non sono supportate come gestori eventi per gli eventi di Griglia di eventi di Azure

Utilizzare l'interfaccia della riga di comando di Azure

Usare il az eventgrid event-subscription create comando 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 az eventgrid topic event-subscription comando per argomenti personalizzati, il az eventgrid system-topic event-subscription comando per gli argomenti di sistema e il az eventgrid partner topic event-subscription create comando per gli argomenti dei partner.

Usare 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 New-AzEventGridSystemTopicEventSubscription comando per gli argomenti di sistema e il New-AzEventGridPartnerTopicEventSubscription comando per gli argomenti dei partner.

Argomenti del bus di servizio

È possibile instradare gli eventi in Griglia di eventi direttamente agli argomenti bus di servizio per gli scenari di messaggistica dei comandi e dei controlli.

Usare il portale di Azure

Nella portale di Azure, durante la creazione di una sottoscrizione di eventi, selezionare bus di servizio Argomento come tipo di endpoint e quindi fare clic su seleziona un endpoint per scegliere un argomento bus di servizio.

Screenshot showing the configuration of a Service Bus topic handler.

Utilizzare l'interfaccia della riga di comando di Azure

Usare il az eventgrid event-subscription create comando 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 az eventgrid topic event-subscription comando per argomenti personalizzati, il az eventgrid system-topic event-subscription comando per gli argomenti di sistema e il az eventgrid partner topic event-subscription create comando per gli argomenti dei partner.

Usare 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 New-AzEventGridSystemTopicEventSubscription comando per gli argomenti di sistema e il New-AzEventGridPartnerTopicEventSubscription comando per gli argomenti dei partner.

Intestazioni del messaggio

Queste sono le proprietà ricevute nelle intestazioni del messaggio:

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

Tipo dell'evento.

Può essere uno dei valori seguenti:

  • SubscriptionValidation
  • Notifica
  • SubscriptionDeletion
aeg-metadata-version

Versione dei metadati dell'evento.

Per lo schema di eventi di Griglia di eventi, questa proprietà rappresenta la versione dei metadati e per lo schema di eventi cloud rappresenta la versione della specifica.

aeg-data-version

Versione dei 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 bus di servizio come messaggio negoziato, il messageid del messaggio negoziato è un ID di sistema interno.

L'ID di sistema interno per il messaggio viene mantenuto in fase di rollforward dell'evento in modo da evitare consegne duplicate attivando il rilevamento dei duplicati nell'entità del bus di servizio. È consigliabile abilitare la durata del rilevamento dei duplicati per l'entità del bus di servizio in modo che corrisponda alla durata (TTL) dell'evento o alla durata massima dei tentativi, a seconda di quale è maggiore.

Proprietà di recapito

Le sottoscrizioni di eventi consentono di configurare le intestazioni HTTP incluse negli eventi recapitati. Questa funzionalità consente di impostare intestazioni personalizzate richieste dalla destinazione. È possibile impostare intestazioni personalizzate sugli eventi recapitati a bus di servizio di Azure code e argomenti.

bus di servizio di Azure supporta l'uso delle proprietà del messaggio seguenti durante l'invio di singoli messaggi.

Nome 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: data.field.
  • È possibile impostare SessionId solo o MessageId.

Per altre informazioni, vedere Proprietà di recapito personalizzate.

Esempi REST (per 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 bus di servizio abilitato per il ripristino di emergenza geografico, lo spazio dei nomi secondario non genera eventi in Griglia di eventi. È necessario aggiungere manualmente la sottoscrizione di Griglia di eventi per lo spazio dei nomi secondario.

Passaggi successivi

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