Översikt över integration av Azure Service Bus till Event Grid
Nu kan Service Bus generera händelser till Event Grid när det finns meddelanden i en kö eller prenumeration utan att det finns några mottagare. Du kan skapa Event Grid-prenumerationer till Service Bus-namnområden, lyssna på dessa händelser och sedan reagera på dem genom att starta en mottagare. Med den här funktionen kan du använda Service Bus i reaktiva programmeringsmodeller. Detta möjliggör scenarier där Service Bus-köer eller prenumerationer med en låg volym av meddelanden inte behöver ha någon mottagare som kontinuerligt söker efter meddelanden.
Om du vill aktivera funktionen behöver du följande:
- Ett Service Bus Premium-namnområde med minst en Service Bus-kö eller ett Service Bus-ämne med minst en prenumeration.
- Deltagaråtkomst till Service Bus-namnområdet. Gå till Service Bus namnområdet i Azure Portal och välj sedan Åtkomstkontroll (IAM) och välj fliken Rolltilldelningar. Kontrollera att du har deltagaråtkomst till namnområdet.
- Dessutom behöver du en prenumeration på Event Grid för Service Bus-namnområdet. Den här prenumerationen får ett meddelande från Event Grid om det finns meddelanden som ska hämtas. Vanliga prenumeranter kan vara Logic Apps-funktionen i Azure App Service, Azure Functions eller en webhook som kontaktar en webbapp. Prenumeranten bearbetar sedan dessa meddelanden.

Tillgängliga händelsetyper
Service Bus följande händelsetyper:
| Händelsetyp | Beskrivning |
|---|---|
| Microsoft.ServiceBus.ActiveMessagesAvailableWithNoListeners | Aktiveras när det finns aktiva meddelanden i en kö eller prenumeration och inga mottagare lyssnar. |
| Microsoft.ServiceBus.DeadletterMessagesAvailableWithNoListeners | Upphöjt när det finns aktiva meddelanden i en kö för dead letter och inga aktiva lyssnare. |
| Microsoft.ServiceBus.ActiveMessagesAvailablePeriodicNotifications | Höjs var 30:e sekund om det finns aktiva meddelanden i en kö eller prenumeration, även om det finns aktiva lyssnare för den specifika kön eller prenumerationen. Den aktiveras också när det aktiva meddelandeantalet övergår från 0 till ett positivt värde för kön eller prenumerationen. |
| Microsoft.ServiceBus.DeadletterMessagesAvailablePeriodicNotifications | Höjs var 30:e sekund om det finns meddelanden i entiteten dead-letter för en kö eller prenumeration, även om det finns aktiva lyssnare på entiteten dead-letter för den specifika kön eller prenumerationen. Den utlöses också när antalet meddelanden utan bokstav övergår från 0 till ett positivt värde för entiteten dead-letter för kön eller prenumerationen. |
Exempelhändelse
Aktiva meddelanden som är tillgängliga utan lyssnare
Den här händelsen genereras om det finns aktiva meddelanden i en kö eller prenumeration och inga mottagare lyssnar.
[{
"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"
}]
Deadletter-meddelanden är tillgängliga utan lyssnare
Schemat för en köhändelse med dead letter liknar varandra. Du får minst en händelse per kö för dead letter som har meddelanden och inga aktiva mottagare.
[{
"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"
}]
Aktiva meddelanden, tillgängliga periodiska meddelanden
Den här händelsen genereras regelbundet om du har aktiva meddelanden i den specifika kön eller prenumerationen, även om det finns aktiva lyssnare för den specifika kön eller prenumerationen.
[{
"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"
}]
Deadletter-meddelanden tillgängliga periodiska meddelanden
Den här händelsen genereras regelbundet om du har deadletter-meddelanden i den specifika kön eller prenumerationen, även om det finns aktiva lyssnare på deadletter-entiteten för den specifika kön eller prenumerationen.
[{
"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"
}]
Händelseegenskaper
En händelse har följande data på den översta nivån:
| Egenskap | Typ | Description |
|---|---|---|
topic |
sträng | Fullständig resurssökväg till händelsekällan. Det här fältet kan inte skrivas. Event Grid ger det här värdet. |
subject |
sträng | Utgivardefinierad sökväg till händelseobjektet. |
eventType |
sträng | En av de registrerade händelsetyperna för den här händelsekällan. |
eventTime |
sträng | Den tid då händelsen genereras baserat på leverantörens UTC-tid. |
id |
sträng | Unik identifierare för händelsen. |
data |
objekt | Blob Storage-händelsedata. |
dataVersion |
sträng | Dataobjektets schemaversion. Utgivaren definierar schemaversion. |
metadataVersion |
sträng | Schemaversionen av händelsens metadata. Event Grid definierar schemat för de översta egenskaperna. Event Grid ger det här värdet. |
Dataobjektet har följande egenskaper:
| Egenskap | Typ | Description |
|---|---|---|
namespaceName |
sträng | Den Service Bus namnrymd som resursen finns i. |
requestUri |
sträng | URI:en till den specifika kö eller prenumeration som skickar händelsen. |
entityType |
sträng | Typen av entitet Service Bus sändar händelser (kö eller prenumeration). |
queueName |
sträng | Kön med aktiva meddelanden om den prenumererar på en kö. Värdet null om du använder ämnen/prenumerationer. |
topicName |
sträng | Det ämne som Service Bus prenumerationen med aktiva meddelanden tillhör. Värdet null om du använder en kö. |
subscriptionName |
sträng | Prenumerationen Service Bus med aktiva meddelanden. Värdet null om du använder en kö. |
Event Grid prenumerationer Service Bus namnområden
Du kan skapa Event Grid-prenumerationer för Service Bus-namnområden på tre sätt:
- Azure Portal. I följande självstudier får du lära dig hur du använder Azure Portal för att skapa Event Grid-prenumerationer för Service Bus-händelser med Azure Logic Apps och Azure Functions som hanterare.
Azure CLI. Följande CLI-exempel visar hur du skapar en Azure Functions-prenumeration för ett systemämne som skapats av en Service Bus namnområde.
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. Här är ett exempel:
$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>"
Hur många händelser genereras, och hur ofta?
Om du har flera köer och ämnen eller prenumerationer i namnområdet, får du minst en händelse per kö och en per prenumeration. Händelserna genereras omedelbart om det inte finns några meddelanden i Service Bus-entiteten och ett nytt meddelande anländer. Eller så genereras händelserna varannan minut, om inte Service Bus identifierar en aktiv mottagare. Bläddring bland meddelanden avbryter inte händelserna.
Som standard genererar Service Bus händelser för alla entiteter i namnområdet. Om du enbart vill hämta händelser för specifika entiteter kan du läsa mer i nästa avsnitt.
Använda filter för att begränsa var du hämtar händelser från
Om du enbart vill hämta händelser från exempelvis en kö eller en prenumeration inom namnområdet, kan du använda filtren Börjar med eller Slutar med som finns i Event Grid. I vissa gränssnitt kallas filtren För och Suffix. Om du vill hämta händelser för flera, men inte alla, köer och prenumerationer, kan du skapa flera Event Grid-prenumerationer och ange ett filter för varje.
Nästa steg
Se följande självstudiekurser: