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.
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.
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:
|
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 oMessageId
.
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.