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 eventi, uno dei quali è il bus di servizio di Azure. Questo articolo illustra come usare una coda o un argomento del bus di servizio come gestore per eventi da Griglia di eventi.
Code del bus di servizio
È possibile 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.
Usare il portale di Azure
Nel portale di Azure, durante la creazione di una sottoscrizione di eventi, selezionare Coda del bus di servizio come tipo di endpoint e quindi fare clic su Selezionare un endpoint per scegliere una coda del 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 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.
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 comando New-AzEventGridSystemTopicEventSubscription
per gli argomenti di sistema e il comando New-AzEventGridPartnerTopicEventSubscription
per gli argomenti dei partner.
Argomenti del bus di servizio
È possibile indirizzare eventi in Griglia di eventi direttamente ad argomenti del bus di servizio per gli scenari di messaggistica di controllo e comando.
Usare il portale di Azure
Nel portale di Azure, durante la creazione di una sottoscrizione di eventi, selezionare Argomento del bus di servizio come tipo di endpoint e quindi fare clic su Selezionare un endpoint per scegliere un argomento del 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 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.
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 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 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 del bus di servizio come messaggio negoziato, messageid
del messaggio negoziato corrisponde all' ID di sistema interno.
L'ID di sistema interno per il messaggio viene mantenuto durante il nuovo recapito dell'evento, per consentire di evitare recapiti duplicati attivando il rilevamento dei duplicati per l'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 alle code e agli argomenti del bus di servizio di Azure.
Il bus di servizio di Azure supporta l'uso delle proprietà dei messaggi 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 solo
SessionId
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 del bus di servizio con Ripristino di emergenza geografico abilitato, 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.