Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
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 Event Grid per i namespace di Service Bus, ascoltare questi eventi e quindi reagire avviando un ricevitore. Con questa funzionalità, è possibile usare il bus di servizio nei modelli di programmazione reattivi. Lo scenario chiave di questa funzionalità è che le code o le sottoscrizioni del Service Bus con un volume ridotto di messaggi non necessitano di un ricevitore che interroghi continuamente i messaggi.
Per abilitare la funzionalità, sono necessari gli elementi seguenti:
- Uno spazio dei nomi Premium di Service Bus con almeno una coda di Service Bus o un argomento di Service Bus con almeno una sottoscrizione.
- Accesso come collaboratore al namespace del Service Bus. Passare al namespace di Service Bus nel portale di Azure, quindi selezionare Controllo di accesso (IAM) e la scheda Assegnazioni di ruolo. Verificare di avere l'accesso collaboratore al namespace.
- Inoltre, è necessaria una sottoscrizione a Event Grid per lo spazio dei nomi del Bus di Servizio. Questa sottoscrizione riceve una notifica da Event Grid che ci sono messaggi da prelevare. I sottoscrittori tipici possono includere la funzionalità Logic Apps di Azure App Service, Azure Functions 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 evento 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 arriva un nuovo messaggio attivo 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 numero di messaggi attivi passa da 0 a un valore positivo per la coda o la sottoscrizione. |
Microsoft.ServiceBus.DeadletterMessagesAvailablePeriodicNotifications |
Generato ogni 30 secondi se ci sono messaggi nell'entità dead-letter di una coda o sottoscrizione, anche quando ci sono listener attivi su quell'entità dead-letter specifica. Viene generato anche quando il conteggio dei messaggi non recapitabili passa da 0 a un valore positivo per l'entità di messaggi non recapitabili della coda o della sottoscrizione. |
Evento di esempio
Messaggi attivi disponibili senza "ascoltatori"
Questo evento viene generato se sono presenti messaggi attivi in una coda o in una sottoscrizione e non sono presenti ricevitori 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 ascoltatore
Lo schema per un evento di coda di messaggi non recapitabili è simile. Si riceve almeno un evento per ogni coda di messaggi non recapitabili che contiene messaggi e non ha ricevitori attivi.
[{
"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 periodiche
Questo evento viene generato periodicamente se sono presenti messaggi attivi nella coda o nella sottoscrizione specifica, 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 non recapitabili disponibili notifiche periodiche
Questo evento viene generato periodicamente se sono presenti messaggi di errore nella coda o nella sottoscrizione specifica, anche se ci sono listener attivi nell'entità della coda dei messaggi di errore di quella specifica coda o sottoscrizione.
[{
"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 ha i seguenti dati di primo livello:
Proprietà | TIPO | Descrizione |
---|---|---|
topic |
corda | Percorso completo della risorsa alla sorgente dell'evento. Questo campo non è scrivibile. Questo valore viene specificato da Griglia di eventi. |
subject |
corda | Percorso definito dal publisher per il soggetto dell'evento. |
eventType |
corda | Uno dei tipi di evento registrati per questa sorgente dell'evento. |
eventTime |
corda | Ora in cui viene generato l'evento in base all'ora UTC del provider. |
id |
corda | Identificatore univoco per l'evento. |
data |
oggetto | Dati dell'evento di Service Bus. |
dataVersion |
corda | Versione dello schema dell'oggetto dati. Il server di pubblicazione definisce la versione dello schema. |
metadataVersion |
corda | Versione dello schema dei metadati dell'evento. Griglia di eventi definisce lo schema delle proprietà di primo livello. Questo valore viene specificato da Griglia di eventi. |
Di seguito sono elencate le proprietà dell'oggetto dati:
Proprietà | TIPO | Descrizione |
---|---|---|
namespaceName |
corda | Lo spazio dei nomi del Service Bus in cui si trova la risorsa. |
requestUri |
corda | URI della coda o della sottoscrizione specifica che genera l'evento. |
entityType |
corda | Tipo di entità del Service Bus che emette eventi (coda o sottoscrizione). |
queueName |
corda | Coda con messaggi attivi se si sottoscrive una coda. Valore Null se si usano argomenti/sottoscrizioni. |
topicName |
corda | Argomento a cui appartiene la sottoscrizione del Service Bus con messaggi attivi. Valore Null se si usa una coda. |
subscriptionName |
corda | Sottoscrizione del Service Bus con messaggi attivi. Valore Null se si usa una coda. |
Sottoscrizioni Event Grid per namespace di Service Bus
È possibile creare sottoscrizioni di Event Grid per i namespace di Service Bus in tre modi diversi:
- Portale di Azure. Consultare le seguenti esercitazioni per imparare a utilizzare il portale di Azure per creare sottoscrizioni di Event Grid per gli eventi di Service Bus con Azure Logic Apps e Azure Functions come gestori.
Azure CLI (Interfaccia della riga di comando di Azure) L'esempio di interfaccia della riga di comando seguente illustra come creare una sottoscrizione di 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. Di seguito è riportato 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>"
Quanti eventi vengono generati e con quale frequenza?
Se nello spazio dei nomi sono presenti più code, argomenti o sottoscrizioni, si riceve almeno un evento per ogni coda, argomento e sottoscrizione. Gli eventi vengono generati immediatamente se non sono presenti messaggi nell'entità del Service Bus e arriva un nuovo messaggio. In alternativa, gli eventi vengono generati 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 genera eventi per tutte le entità nello spazio dei nomi. Per ottenere eventi solo per entità specifiche, vedere la sezione successiva.
Usare i filtri per limitare la posizione da cui si ottengono gli eventi
Se si desidera ottenere eventi solo da, ad esempio, una coda o una sottoscrizione all'interno dello spazio dei nomi, è possibile utilizzare i filtri Inizia con o Termina con forniti da Event Grid. In alcune interfacce, i filtri sono denominati filtri Pre e Suffisso. Se si desidera ottenere eventi per più code e sottoscrizioni, ma non tutte, è possibile creare più sottoscrizioni di Event Grid e fornire un filtro per ciascuna.
Passaggi successivi
Vedere le esercitazioni seguenti: