Översikt över integration av Azure Service Bus till Event Grid

Service Bus kan skicka händelser till Event Grid när det finns meddelanden i en kö eller en prenumeration när det inte 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.

19

Tillgängliga händelsetyper

Service Bus genererar följande händelsetyper:

Händelsetyp Beskrivning
Microsoft.ServiceBus.ActiveMessagesAvailableWithNoListeners Aktiveras när ett nytt aktivt meddelande tas emot i en kö eller prenumeration och det inte finns några mottagare som lyssnar.
Microsoft.ServiceBus.DeadletterMessagesAvailableWithNoListeners Aktiveras när nya aktiva meddelanden tas emot i en kö med obeställbara meddelanden och det inte finns några aktiva lyssnare.
Microsoft.ServiceBus.ActiveMessagesAvailablePeriodicNotifications Aktiveras var 30:e sekund om det finns aktiva meddelanden i en kö eller prenumeration, även om det finns aktiva lyssnare i den specifika kön eller prenumerationen. Det aktiveras också när antalet aktiva meddelanden övergår från 0 till ett positivt värde för kön eller prenumerationen.
Microsoft.ServiceBus.DeadletterMessagesAvailablePeriodicNotifications Aktiveras var 30:e sekund om det finns meddelanden i entiteten obeställbara meddelanden i en kö eller prenumeration, även om det finns aktiva lyssnare i entiteten med obeställbara meddelanden för den specifika kön eller prenumerationen. Det aktiveras också när antalet meddelanden med obeställbara meddelanden övergår från 0 till ett positivt värde för entiteten obeställbara meddelanden i kön eller prenumerationen.

Exempelhändelse

Aktiva meddelanden ä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"
}]

Obeställbara meddelanden tillgängliga utan lyssnare

Schemat för en köhändelse med obeställbara meddelanden liknar detta. Du får minst en händelse per kö med obeställbara meddelanden 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 som är tillgängliga med regelbundna 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"
}]

Meddelanden med obeställbara meddelanden som är tillgängliga med jämna mellanrum

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 Service Bus-namnområdet som resursen finns i.
requestUri sträng URI:n till den specifika kön eller prenumerationen som genererar händelsen.
entityType sträng Typen av Service Bus-entitet som genererar händelser (kö eller prenumeration).
queueName sträng Kön med aktiva meddelanden om du prenumererar på en kö. Värde null om du använder ämnen/prenumerationer.
topicName sträng Ämnet som Service Bus-prenumerationen med aktiva meddelanden tillhör. Värdet null om du använder en kö.
subscriptionName sträng Service Bus-prenumerationen med aktiva meddelanden. Värdet null om du använder en kö.

Event Grid-prenumerationer för Service Bus-namnområden

Du kan skapa Event Grid-prenumerationer för Service Bus-namnområden på tre sätt:

  • Azure Portal. Se följande självstudier för att 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. I följande CLI-exempel visas hur du skapar en Azure Functions prenumeration för ett systemämne som skapats av ett 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. Meddelandebläddring 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: