Ö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.

19

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: