Panoramica dell'integrazione del bus di servizio di Azure in Griglia di eventi
Il bus di servizio può generare eventi in Griglia di eventi quando sono presenti messaggi in una coda o in una sottoscrizione quando non sono presenti ricevitori. È possibile creare sottoscrizioni di Griglia di eventi per gli spazi dei nomi del bus di servizio, restare in ascolto di tali eventi e quindi reagire a essi avviando un ricevitore. Questa funzionalità consente di usare il bus di servizio in modelli di programmazione reattivi. Il principale scenario di questa funzionalità è la possibilità, in caso di code e sottoscrizioni del bus di servizio con un volume ridotto di messaggi, di non avere un ricevitore che esegue costantemente il polling dei messaggi.
Per abilitare questa funzionalità, sono necessari gli elementi seguenti:
- Spazio dei nomi Premium del bus di servizio con almeno una coda o un argomento del bus di servizio con almeno una sottoscrizione.
- Accesso di tipo Collaboratore allo spazio dei nomi del bus di servizio. Passare allo spazio dei nomi del bus di servizio nella portale di Azure e quindi selezionare Controllo di accesso (IAM) e selezionare La scheda Assegnazioni di ruolo. Verificare di avere l'accesso allo spazio dei nomi.
- Sottoscrizione di Griglia di eventi per lo spazio dei nomi del bus di servizio. Questa sottoscrizione riceve una notifica da Griglia di eventi che segnala la presenza di messaggi da prelevare. I sottoscrittori tipici potrebbero essere la funzionalità App per la logica di Servizio app di Azure, Funzioni di Azure o un webhook che contatta un'app Web. Il sottoscrittore elabora quindi i messaggi.
Tipi di evento disponibili
Il bus di servizio genera i tipi di eventi seguenti:
Tipo di evento | Descrizione |
---|---|
Microsoft.ServiceBus.ActiveMessagesAvailableWithNoListeners |
Generato quando arriva un nuovo messaggio attivo in una coda o una sottoscrizione e non sono presenti ricevitori in ascolto. |
Microsoft.ServiceBus.DeadletterMessagesAvailableWithNoListeners |
Generato quando un nuovo messaggio attivo arriva in una coda di messaggi non recapitabili e non sono presenti listener attivi. |
Microsoft.ServiceBus.ActiveMessagesAvailablePeriodicNotifications |
Generato ogni 30 secondi se sono presenti messaggi attivi in una coda o in una sottoscrizione, anche se sono presenti listener attivi in tale coda o sottoscrizione specifica. Viene generato anche quando il conteggio dei messaggi attivi passa da 0 a un valore positivo per la coda o la sottoscrizione. |
Microsoft.ServiceBus.DeadletterMessagesAvailablePeriodicNotifications |
Generato ogni 30 secondi se sono presenti messaggi nell'entità di una coda o di una sottoscrizione non recapitabili, anche se sono presenti listener attivi nell'entità lettera non recapitata di tale coda o sottoscrizione specifica. Viene generato anche quando il conteggio dei messaggi non recapitabili passa da 0 a un valore positivo per l'entità lettera non recapitata della coda o della sottoscrizione. |
Evento di esempio
Messaggi attivi disponibili senza listener
Questo evento viene generato se in una coda o una sottoscrizione sono presenti messaggi attivi e nessun ricevitore è in ascolto.
[{
"topic": "/subscriptions/{subscription-id}/resourcegroups/{your-rg}/providers/Microsoft.ServiceBus/namespaces/{your-service-bus-namespace}",
"subject": "topics/{your-service-bus-topic}/subscriptions/{your-service-bus-subscription}",
"eventType": "Microsoft.ServiceBus.ActiveMessagesAvailableWithNoListeners",
"eventTime": "2018-02-14T05:12:53.4133526Z",
"id": "dede87b0-3656-419c-acaf-70c95ddc60f5",
"data": {
"namespaceName": "YOUR SERVICE BUS NAMESPACE WILL SHOW HERE",
"requestUri": "https://{your-service-bus-namespace}.servicebus.windows.net/{your-topic}/subscriptions/{your-service-bus-subscription}/messages/head",
"entityType": "subscriber",
"queueName": "QUEUE NAME IF QUEUE",
"topicName": "TOPIC NAME IF TOPIC",
"subscriptionName": "SUBSCRIPTION NAME"
},
"dataVersion": "1",
"metadataVersion": "1"
}]
Messaggi non recapitabili disponibili senza listener
Lo schema per un evento di coda di lettere non recapitabili è simile. Si ottiene almeno un evento per coda di messaggi non recapitabili che contiene messaggi e nessun ricevitore attivo.
[{
"topic": "/subscriptions/{subscription-id}/resourcegroups/{your-rg}/providers/Microsoft.ServiceBus/namespaces/{your-service-bus-namespace}",
"subject": "topics/{your-service-bus-topic}/subscriptions/{your-service-bus-subscription}",
"eventType": "Microsoft.ServiceBus.DeadletterMessagesAvailableWithNoListeners",
"eventTime": "2018-02-14T05:12:53.4133526Z",
"id": "dede87b0-3656-419c-acaf-70c95ddc60f5",
"data": {
"namespaceName": "YOUR SERVICE BUS NAMESPACE WILL SHOW HERE",
"requestUri": "https://{your-service-bus-namespace}.servicebus.windows.net/{your-topic}/subscriptions/{your-service-bus-subscription}/$deadletterqueue/messages/head",
"entityType": "subscriber",
"queueName": "QUEUE NAME IF QUEUE",
"topicName": "TOPIC NAME IF TOPIC",
"subscriptionName": "SUBSCRIPTION NAME"
},
"dataVersion": "1",
"metadataVersion": "1"
}]
Messaggi attivi disponibili notifiche periodice
Questo evento viene generato periodicamente se si hanno messaggi attivi nella coda o nella sottoscrizione specifici, anche se sono presenti listener attivi per tale coda o sottoscrizione specifica.
[{
"topic": "/subscriptions/<subscription id>/resourcegroups/DemoGroup/providers/Microsoft.ServiceBus/namespaces/<YOUR SERVICE BUS NAMESPACE WILL SHOW HERE>",
"subject": "topics/<service bus topic>/subscriptions/<service bus subscription>",
"eventType": "Microsoft.ServiceBus.ActiveMessagesAvailablePeriodicNotifications",
"eventTime": "2018-02-14T05:12:53.4133526Z",
"id": "dede87b0-3656-419c-acaf-70c95ddc60f5",
"data": {
"namespaceName": "YOUR SERVICE BUS NAMESPACE WILL SHOW HERE",
"requestUri": "https://YOUR-SERVICE-BUS-NAMESPACE-WILL-SHOW-HERE.servicebus.windows.net/TOPIC-NAME/subscriptions/SUBSCRIPTIONNAME/$deadletterqueue/messages/head",
"entityType": "subscriber",
"queueName": "QUEUE NAME IF QUEUE",
"topicName": "TOPIC NAME IF TOPIC",
"subscriptionName": "SUBSCRIPTION NAME"
},
"dataVersion": "1",
"metadataVersion": "1"
}]
Messaggi di lettera non recapitabili disponibili notifiche periodiche
Questo evento viene generato periodicamente se sono presenti messaggi inattivi nella coda o nella sottoscrizione specifici, anche se sono presenti listener attivi nell'entità deadletter di tale coda o sottoscrizione specifica.
[{
"topic": "/subscriptions/<subscription id>/resourcegroups/DemoGroup/providers/Microsoft.ServiceBus/namespaces/<YOUR SERVICE BUS NAMESPACE WILL SHOW HERE>",
"subject": "topics/<service bus topic>/subscriptions/<service bus subscription>",
"eventType": "Microsoft.ServiceBus.DeadletterMessagesAvailablePeriodicNotifications",
"eventTime": "2018-02-14T05:12:53.4133526Z",
"id": "dede87b0-3656-419c-acaf-70c95ddc60f5",
"data": {
"namespaceName": "YOUR SERVICE BUS NAMESPACE WILL SHOW HERE",
"requestUri": "https://YOUR-SERVICE-BUS-NAMESPACE-WILL-SHOW-HERE.servicebus.windows.net/TOPIC-NAME/subscriptions/SUBSCRIPTIONNAME/$deadletterqueue/messages/head",
"entityType": "subscriber",
"queueName": "QUEUE NAME IF QUEUE",
"topicName": "TOPIC NAME IF TOPIC",
"subscriptionName": "SUBSCRIPTION NAME"
},
"dataVersion": "1",
"metadataVersion": "1"
}]
Proprietà degli eventi
Un evento presenta i seguenti dati di primo livello:
Proprietà | Type | Descrizione |
---|---|---|
topic |
string | Percorso risorsa completo dell'origine evento. Questo campo non è scrivibile. Questo valore viene fornito da Griglia di eventi. |
subject |
string | Percorso dell'oggetto dell'evento definito dall'origine di pubblicazione. |
eventType |
string | Uno dei tipi di evento registrati per l'origine evento. |
eventTime |
string | Ora di generazione dell'evento in base all'ora UTC del provider. |
id |
string | Identificatore univoco dell'evento. |
data |
object | Dati relativi all'evento di archiviazione BLOB. |
dataVersion |
string | Versione dello schema dell'oggetto dati. La versione dello schema è definita dall'origine di pubblicazione. |
metadataVersion |
string | Versione dello schema dei metadati dell'evento. Lo schema delle proprietà di primo livello è definito da Griglia di eventi. Questo valore viene specificato da Griglia di eventi. |
Di seguito sono elencate le proprietà dell'oggetto dati:
Proprietà | Type | Descrizione |
---|---|---|
namespaceName |
string | Spazio dei nomi del bus di servizio in cui esiste la risorsa. |
requestUri |
string | URI della coda o della sottoscrizione specifica che crea l'evento. |
entityType |
string | Tipo di entità del bus di servizio che crea gli eventi (coda o sottoscrizione). |
queueName |
string | Coda con messaggi attivi in caso di sottoscrizione di una coda. Valore null se si usano argomenti/sottoscrizioni. |
topicName |
string | Argomento a cui appartiene la sottoscrizione del bus di servizio con messaggi attivi. Valore null se si usa una coda. |
subscriptionName |
string | Sottoscrizione del bus di servizio con messaggi attivi. Valore null se si usa una coda. |
Sottoscrizioni di Griglia di eventi per spazi dei nomi del bus di servizio
È possibile creare sottoscrizioni di Griglia di eventi per gli spazi dei nomi del bus di servizio in tre diversi modi:
- Portale di Azure. Vedere le esercitazioni seguenti per informazioni su come usare portale di Azure per creare sottoscrizioni di Griglia di eventi per gli eventi del bus di servizio con App per la logica di Azure e Funzioni di Azure come gestori.
Interfaccia della riga di comando di Azure. Nell'esempio dell'interfaccia della riga di comando seguente viene illustrato come creare una sottoscrizione Funzioni di Azure per un argomento di sistema creato da uno spazio dei nomi del bus di servizio.
namespaceid=$(az resource show --namespace Microsoft.ServiceBus --resource-type namespaces --name "<service bus namespace>" --resource-group "<resource group that contains the service bus namespace>" --query id --output tsv az eventgrid event-subscription create --resource-id $namespaceid --name "<YOUR EVENT GRID SUBSCRIPTION NAME>" --endpoint "<your_endpoint_url>" --subject-ends-with "<YOUR SERVICE BUS SUBSCRIPTION NAME>"
- PowerShell. Ecco un esempio:
$namespaceID = (Get-AzServiceBusNamespace -ResourceGroupName "<YOUR RESOURCE GROUP NAME>" -NamespaceName "<YOUR NAMESPACE NAME>").Id New-AzEVentGridSubscription -EventSubscriptionName "<YOUR EVENT GRID SUBSCRIPTION NAME>" -ResourceId $namespaceID -Endpoint "<YOUR ENDPOINT URL>” -SubjectEndsWith "<YOUR SERVICE BUS SUBSCRIPTION NAME>"
Numero di eventi emessi e frequenza di emissione
Se si hanno più code e argomenti o sottoscrizioni nello spazio dei nomi, vengono generati almeno un evento per coda e un evento per sottoscrizione. Gli eventi vengono emessi immediatamente se non sono presenti messaggi nell'entità del bus di servizio e arriva un nuovo messaggio oppure vengono emessi ogni due minuti a meno che il bus di servizio non rilevi un ricevitore attivo. L'esplorazione dei messaggi non interrompe gli eventi.
Per impostazione predefinita, il bus di servizio emette eventi per tutte le entità nello spazio dei nomi. Se si vogliono ottenere eventi solo per entità specifiche, vedere la sezione successiva.
Usare i filtri per limitare le origini da cui è possibile ottenere gli eventi
Se si vogliono ottenere eventi solo da una coda o una sottoscrizione nello spazio dei nomi, ad esempio, è possibile usare i filtri Inizia con o Termina con offerti da Griglia di eventi, che in alcune interfacce sono denominati filtri per prefisso e suffisso. Se si vogliono ottenere eventi per più code e sottoscrizioni ma non per tutte, è possibile creare più sottoscrizioni di Griglia di eventi e specificare un filtro per ognuna.
Passaggi successivi
Vedere le esercitazioni seguenti: