Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Service Bus kann Ereignisse an das Ereignisraster ausgeben, wenn nachrichten in einer Warteschlange oder in einem Abonnement vorhanden sind, wenn keine Empfänger vorhanden sind. Sie können Event Grid-Abonnements für Ihre Service Bus-Namespaces erstellen, diese Ereignisse überwachen und dann auf die Ereignisse reagieren, indem Sie einen Empfänger starten. Mit dieser Funktion können Sie Service Bus in reaktiven Programmiermodellen verwenden. Das wichtigste Szenario dieses Features ist, dass Service Bus-Warteschlangen oder -Abonnements mit einer geringen Anzahl von Nachrichten keinen Empfänger haben müssen, der kontinuierlich nach Nachrichten abruft.
Um das Feature zu aktivieren, benötigen Sie die folgenden Elemente:
- Ein Service Bus Premium-Namespace mit mindestens einer ServiceBus-Warteschlange oder einem Service Bus-Thema mit mindestens einem Abonnement.
- Mitwirkenderzugriff auf den ServiceBus-Namespace. Navigieren Sie im Azure-Portal zu Ihrem Service Bus-Namespace, und wählen Sie dann die Zugriffssteuerung (IAM) und dann die Registerkarte "Rollenzuweisungen " aus. Stellen Sie sicher, dass Sie über den Mitwirkendenzugriff auf den Namespace verfügen.
- Darüber hinaus benötigen Sie ein Event Grid-Abonnement für den Service Bus-Namespace. Dieses Abonnement empfängt eine Benachrichtigung aus dem Ereignisraster, dass Nachrichten zur Abholung vorhanden sind. Typische Abonnenten können das Logic Apps-Feature von Azure App Service, Azure Functions oder ein Webhook sein, der eine Web-App kontaktiert. Der Abonnent verarbeitet dann die Nachrichten.
Verfügbare Ereignistypen
Service Bus gibt die folgenden Ereignistypen aus:
| Ereignistyp | BESCHREIBUNG |
|---|---|
Microsoft.ServiceBus.ActiveMessagesAvailableWithNoListeners |
Wird ausgelöst, wenn eine neue aktive Nachricht in einer Warteschlange oder einem Abonnement eingeht und keine Empfänger lauschen. |
Microsoft.ServiceBus.DeadletterMessagesAvailableWithNoListeners |
Wird ausgelöst, wenn eine neue aktive Nachricht in einer Warteschleife eingeht und keine aktiven Listener vorhanden sind. |
Microsoft.ServiceBus.ActiveMessagesAvailablePeriodicNotifications |
Wird alle 30 Sekunden ausgelöst, wenn aktive Nachrichten in einer Warteschlange oder einem Abonnement vorhanden sind, auch wenn aktive Listener in dieser bestimmten Warteschlange oder in diesem Abonnement vorhanden sind. Sie wird auch ausgelöst, wenn die Anzahl der aktiven Nachrichten von 0 zu einem positiven Wert für die Warteschlange oder das Abonnement wechselt. |
Microsoft.ServiceBus.DeadletterMessagesAvailablePeriodicNotifications |
Wird alle 30 Sekunden ausgelöst, wenn nachrichten in der Entität "Inaktiv" einer Warteschlange oder eines Abonnements enthalten sind, auch wenn aktive Listener in der Entität "Dead-Letter" dieser bestimmten Warteschlange oder dieses Abonnements vorhanden sind. Sie wird auch ausgelöst, wenn die Anzahl der Nachrichten mit einem Totbuchstaben von 0 zu einem positiven Wert für die Entität "Inaktiv" der Warteschlange oder des Abonnements wechselt. |
Beispielereignis
Aktive Nachrichten ohne Listener verfügbar
Dieses Ereignis wird generiert, wenn Sie aktive Nachrichten in einer Warteschlange oder einem Abonnement haben und keine Empfänger lauschen.
[{
"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"
}]
Inaktive Nachrichten, die ohne Listener verfügbar sind
Das Schema für ein Ereignis in der Warteschleifenwarteschlange ist ähnlich. Sie erhalten mindestens ein Ereignis pro Warteschlange mit Nachrichten und keine aktiven Empfänger.
[{
"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"
}]
Aktive Nachrichten, die regelmäßige Benachrichtigungen verfügbar sind
Dieses Ereignis wird in regelmäßigen Abständen generiert, wenn Sie aktive Nachrichten in der spezifischen Warteschlange oder im Abonnement haben, auch wenn es aktive Listener für diese bestimmte Warteschlange oder dieses Abonnement gibt.
[{
"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"
}]
Nachrichten mit in toten Buchstaben verfügbaren regelmäßigen Benachrichtigungen
Dieses Ereignis wird in regelmäßigen Abständen generiert, wenn Sie deadletter-Nachrichten in der spezifischen Warteschlange oder im Abonnement haben, auch wenn aktive Listener in der Deadletter-Entität dieser bestimmten Warteschlange oder dieses Abonnements vorhanden sind.
[{
"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"
}]
Ereigniseigenschaften
Ein Ereignis enthält die folgenden Daten auf oberster Ebene:
| Eigentum | Typ | BESCHREIBUNG |
|---|---|---|
topic |
Schnur | Vollständiger Ressourcenpfad zur Ereignisquelle. Dieses Feld ist nicht beschreibbar. Dieser Wert wird von Event Grid bereitgestellt. |
subject |
Schnur | Vom Herausgeber definierter Pfad zum Ereignisbetreff |
eventType |
Schnur | Einer der registrierten Ereignistypen für die Ereignisquelle. |
eventTime |
Schnur | Die Zeit, in der das Ereignis generiert wird, basierend auf der UTC-Zeit des Anbieters. |
id |
Schnur | Eindeutiger Bezeichner für das Ereignis. |
data |
Objekt | Service Bus-Ereignisdaten. |
dataVersion |
Schnur | Die Schemaversion des Datenobjekts. Der Herausgeber definiert die Schemaversion. |
metadataVersion |
Schnur | Die Schemaversion der Ereignismetadaten. Das Ereignisraster definiert das Schema der Eigenschaften der obersten Ebene. Dieser Wert wird von Event Grid bereitgestellt. |
Das Datenobjekt weist die folgenden Eigenschaften auf:
| Eigentum | Typ | BESCHREIBUNG |
|---|---|---|
namespaceName |
Schnur | Der Service Bus-Namespace, in dem die Ressource vorhanden ist. |
requestUri |
Schnur | Der URI für die spezifische Warteschlange oder das Abonnement, das das Ereignis aussendet. |
entityType |
Schnur | Der Typ der Service Bus-Entität, die Ereignisse ausgibt (Warteschlange oder Abonnement). |
queueName |
Schnur | Die Warteschlange mit aktiven Nachrichten, wenn Sie eine Warteschlange abonnieren. Wert null, wenn Themen/Abonnements verwendet werden. |
topicName |
Schnur | Das Thema des Service Bus-Abonnements mit aktiven Nachrichten gehört zu. Wert null, wenn eine Warteschlange verwendet wird. |
subscriptionName |
Schnur | Das Service Bus-Abonnement mit aktiven Nachrichten. Wert null, wenn eine Warteschlange verwendet wird. |
Event Grid-Abonnements für Service Bus-Namespaces
Sie können Event Grid-Abonnements für Service Bus-Namespaces auf drei verschiedene Arten erstellen:
- Azure-Portal. In den folgenden Lernprogrammen erfahren Sie, wie Sie mithilfe des Azure-Portals Event Grid-Abonnements für Service Bus-Ereignisse mit Azure Logic Apps und Azure Functions als Handlern erstellen.
Azure CLI. Das folgende CLI-Beispiel zeigt, wie Sie ein Azure Functions-Abonnement für ein Systemthema erstellen, das von einem Service Bus-Namespace erstellt wurde.
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. Im Folgenden finden Sie ein Beispiel:
$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>"
Wie viele Ereignisse werden ausgegeben und wie oft?
Wenn Sie über mehrere Warteschlangen und Themen oder Abonnements im Namespace verfügen, erhalten Sie mindestens ein Ereignis pro Warteschlange und ein Ereignis pro Abonnement. Die Ereignisse werden sofort ausgegeben, wenn keine Nachrichten in der ServiceBus-Entität vorhanden sind und eine neue Nachricht eingeht. Oder die Ereignisse werden alle zwei Minuten ausgegeben, es sei denn, service bus erkennt einen aktiven Empfänger. Das Durchsuchen von Nachrichten unterbricht die Ereignisse nicht.
Standardmäßig gibt Service Bus Ereignisse für alle Entitäten im Namespace aus. Wenn Sie Nur Ereignisse für bestimmte Entitäten abrufen möchten, lesen Sie den nächsten Abschnitt.
Verwenden von Filtern, um den Ort einzuschränken, von dem Ereignisse abgerufen werden
Wenn Sie Ereignisse nur aus einer Warteschlange oder einem Abonnement innerhalb Ihres Namespace abrufen möchten, können Sie die "Begins with" oder "Ends" mit Filtern verwenden, die vom Ereignisraster bereitgestellt werden. In einigen Schnittstellen werden die Filter als Prä- und Suffixfilter bezeichnet. Wenn Sie Ereignisse für mehrere, aber nicht alle, Warteschlangen und Abonnements abrufen möchten, können Sie mehrere Event Grid-Abonnements erstellen und jeweils einen Filter bereitstellen.
Nächste Schritte
Sehen Sie sich die folgenden Tutorials an: