Dela via


Översikt över Integrering 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 inga mottagare finns. Du kan skapa Event Grid-prenumerationer på dina Service Bus-namnområden, lyssna på dessa händelser och sedan reagera på händelserna genom att starta en mottagare. Med den här funktionen kan du använda Service Bus i reaktiva programmeringsmodeller. Det viktigaste scenariot med den här funktionen är att Service Bus-köer eller prenumerationer med en låg mängd meddelanden inte behöver ha en mottagare som söker efter meddelanden kontinuerligt.

För att 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-portalen 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 Event Grid-prenumeration för Service Bus-namnområdet. Den här prenumerationen får ett meddelande från Event Grid om att 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 meddelandena.

19

Tillgängliga händelsetyper

Service Bus genererar följande händelsetyper:

Händelsetyp Beskrivning
Microsoft.ServiceBus.ActiveMessagesAvailableWithNoListeners Utlöses 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 Genereras 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 Upphöjt 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 utlöses 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 Upphöjt var 30:e sekund om det finns meddelanden i en entitet med obeställbara meddelanden i en kö eller prenumeration, även om det finns aktiva lyssnare i entiteten med obeställbara meddelanden i den specifika kön eller prenumerationen. Det genereras också när antalet meddelanden med obeställbara meddelanden övergår från 0 till ett positivt värde för entiteten med obeställbara bokstäver i kön eller prenumerationen.

Exempelhändelse

Aktiva meddelanden tillgängliga utan lyssnare

Den här händelsen genereras om du har aktiva meddelanden i en kö eller en prenumeration och det inte finns några mottagare som 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 det. Du får minst en händelse per felkö som har meddelanden men 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"
}]

Tillgängliga aktiva meddelanden och periodiska notifieringar

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"
}]

Tillgängliga periodiska aviseringar för obeställbara 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:

Fastighet Typ Beskrivning
topic snöre Fullständig resurssökväg till händelsekällan. Det här fältet kan inte skrivas. Event Grid tillhandahåller det här värdet.
subject snöre Utgivardefinierad sökväg till händelseobjektet.
eventType snöre En av de registrerade händelsetyperna för den här händelsekällan.
eventTime snöre Den tid då händelsen genereras baserat på leverantörens UTC-tid.
id snöre Unik identifierare för händelsen.
data objekt Service Bus-händelsedata.
dataVersion snöre Schemaversionen av dataobjektet. Utgivaren definierar schemaversionen.
metadataVersion snöre Schemaversionen av händelsemetadata. Event Grid definierar schemat för egenskaperna på den översta nivån. Event Grid tillhandahåller det här värdet.

Dataobjektet har följande egenskaper:

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

  • Azure-portalen. Se följande självstudier för att lära dig hur du använder Azure-portalen 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 tas emot. 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 bara vill hämta händelser för specifika entiteter kan du läsa nästa avsnitt.

Använd filter för att begränsa var du hämtar händelser från

Om du bara vill hämta händelser från till exempel en kö eller en prenumeration inom ditt namnområde kan du använda filtren Börjar med eller Slutar med som tillhandahålls av Event Grid. I vissa gränssnitt kallas filtren Pre- och Suffixfilter. 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 var och en.

Nästa steg

Se följande handledningar: