Service Bus-Warteschlangen und -Themen als Ereignishandler für Azure Event Grid-Ereignisse
Ein Ereignishandler empfängt Ereignisse von einer Ereignisquelle über Event Grid und verarbeitet diese Ereignisse. Sie können Instanzen einiger Azure-Dienste verwenden, um Ereignisse zu behandeln. Azure Service Bus ist eines davon. In diesem Artikel erfahren Sie, wie Sie eine Service Bus-Warteschlange oder ein Service Bus-Thema als Handler für Ereignisse aus Event Grid verwenden.
Service Bus-Warteschlangen
Sie können Ereignisse in Event Grid zur Verwendung in Puffer- oder Befehls- und Kontrollszenarien in Unternehmensanwendungen direkt an Service Bus-Warteschlangen weiterleiten.
Verwenden des Azure-Portals
Wählen Sie im Azure-Portal bei der Erstellung eines Ereignisabonnements Service Bus-Warteschlange als Endpunkttyp aus, und klicken Sie dann auf Endpunkt auswählen, um eine Service Bus-Warteschlange auszuwählen.
Hinweis
Sitzungsfähige Warteschlangen werden nicht als Ereignishandler für Azure Event Grid-Ereignisse unterstützt.
Mithilfe der Azure-Befehlszeilenschnittstelle
Verwenden Sie den Befehl az eventgrid event-subscription create
, wobei --endpoint-type
auf servicebusqueue
und --endpoint
auf /subscriptions/{AZURE SUBSCRIPTION}/resourceGroups/<RESOURCE GROUP NAME>/providers/Microsoft.ServiceBus/namespaces/<NAMESPACE NAME>/queues/<QUEUE NAME>
festgelegt ist. Hier sehen Sie ein Beispiel:
az eventgrid event-subscription create \
--name <my-event-subscription> \
--source-resource-id /subscriptions/{SubID}/resourceGroups/{RG}/providers/Microsoft.EventGrid/topics/topic1 \
--endpoint-type servicebusqueue \
--endpoint /subscriptions/{SubID}/resourceGroups/TestRG/providers/Microsoft.ServiceBus/namespaces/ns1/queues/queue1
Sie können auch den Befehl az eventgrid topic event-subscription
für benutzerdefinierte Themen, den Befehl az eventgrid system-topic event-subscription
für Systemthemen und den Befehl az eventgrid partner topic event-subscription create
für Partnerthemen verwenden.
Mithilfe von Azure PowerShell
Verwenden Sie den Befehl New-AzEventGridSubscription, wobei -EndpointType
auf servicebusqueue
und -Endpoint
auf /subscriptions/{AZURE SUBSCRIPTION}/resourceGroups/<RESOURCE GROUP NAME>/providers/Microsoft.ServiceBus/namespaces/<NAMESPACE NAME>/queues/<QUEUE NAME>
festgelegt ist. Hier sehen Sie ein Beispiel:
New-AzEventGridSubscription -ResourceGroup MyResourceGroup `
-TopicName Topic1 `
-EndpointType servicebusqueue `
-Endpoint /subscriptions/{SubID}/resourceGroups/TestRG/providers/Microsoft.ServiceBus/namespaces/ns1/queues/queue1 `
-EventSubscriptionName EventSubscription1
Sie können auch den Befehl New-AzEventGridSystemTopicEventSubscription
für Systemthemen und den Befehl New-AzEventGridPartnerTopicEventSubscription
für Partnerthemen verwenden.
Service Bus-Themen
Sie können Ereignisse in Event Grid zur Verwendung in Befehls- und Kontrollszenarien direkt an Service Bus-Themen weiterleiten.
Verwenden des Azure-Portals
Wählen Sie im Azure-Portal bei der Erstellung eines Ereignisabonnements Service Bus-Thema als Endpunkttyp aus, und klicken Sie dann auf Endpunkt auswählen, um ein Service Bus-Thema auszuwählen.
Mithilfe der Azure-Befehlszeilenschnittstelle
Verwenden Sie den Befehl az eventgrid event-subscription create
, wobei --endpoint-type
auf servicebustopic
und --endpoint
auf /subscriptions/{AZURE SUBSCRIPTION}/resourceGroups/<RESOURCE GROUP NAME>/providers/Microsoft.ServiceBus/namespaces/<NAMESPACE NAME>/topics/<TOPIC NAME>
festgelegt ist. Hier sehen Sie ein Beispiel:
az eventgrid event-subscription create \
--name <my-event-subscription> \
--source-resource-id /subscriptions/{SubID}/resourceGroups/{RG}/providers/Microsoft.EventGrid/topics/topic1 \
--endpoint-type servicebustopic \
--endpoint /subscriptions/{SubID}/resourceGroups/TestRG/providers/Microsoft.ServiceBus/namespaces/ns1/topics/topic1
Sie können auch den Befehl az eventgrid topic event-subscription
für benutzerdefinierte Themen, den Befehl az eventgrid system-topic event-subscription
für Systemthemen und den Befehl az eventgrid partner topic event-subscription create
für Partnerthemen verwenden.
Mithilfe von Azure PowerShell
Verwenden Sie den Befehl New-AzEventGridSubscription, wobei -EndpointType
auf servicebustopic
und -Endpoint
auf /subscriptions/{AZURE SUBSCRIPTION}/resourceGroups/<RESOURCE GROUP NAME>/providers/Microsoft.ServiceBus/namespaces/<NAMESPACE NAME>/topics/<TOPIC NAME>
festgelegt ist. Hier sehen Sie ein Beispiel:
New-AzEventGridSubscription -ResourceGroup MyResourceGroup `
-TopicName Topic1 `
-EndpointType servicebustopic `
-Endpoint /subscriptions/{SubID}/resourceGroups/TestRG/providers/Microsoft.ServiceBus/namespaces/ns1/topics/topic1 `
-EventSubscriptionName EventSubscription1
Sie können auch den Befehl New-AzEventGridSystemTopicEventSubscription
für Systemthemen und den Befehl New-AzEventGridPartnerTopicEventSubscription
für Partnerthemen verwenden.
Nachrichtenheader
Dies sind die Eigenschaften, die Sie in den Nachrichtenheadern empfangen:
Eigenschaftenname | BESCHREIBUNG |
---|---|
aeg-subscription-name | Name des Ereignisabonnements. |
aeg-delivery-count | Anzahl von Versuchen, die für das Ereignis durchgeführt wurden |
aeg-event-type | Der Typ des Ereignisses Es kann sich um einen der folgenden Werte handeln:
|
aeg-metadata-version | Die Metadatenversion des Ereignisses Bei einem Event Grid-Ereignisschema stellt diese Eigenschaft die Metadatenversion und bei einem Cloudereignisschema die Spezifikationsversion dar. |
aeg-data-version | Die Datenversion des Ereignisses Bei einem Event Grid-Ereignisschema stellt diese Eigenschaft die Datenversion dar. Bei einem Cloudereignisschema kommt sie nicht zur Anwendung |
aeg-output-event-id | ID des Event Grid-Ereignisses |
Wenn Sie ein Ereignis an eine Service Bus-Warteschlange oder ein Service Bus-Thema als im Broker gespeicherte Nachricht senden, ist die messageid
dieser im Broker gespeicherten Nachricht eine interne System-ID.
Die interne System-ID für die Nachricht wird bei der erneuten Übermittlung des Ereignisses beibehalten. Sie können also doppelte Übermittlungen vermeiden, indem Sie die Duplikaterkennung für die Service Bus-Entität aktivieren. Es wird empfohlen, die Dauer der Duplikaterkennung für die Service Bus-Entität entweder auf die Gültigkeitsdauer (Time-To-Live, TTL) des Ereignisses oder auf den maximalen Wiederholungszeitraum festzulegen, je nachdem, welcher Zeitraum länger ist.
Übermittlungseigenschaften
Mit Ereignisabonnements können Sie HTTP-Header einrichten, die in übermittelte Ereignisse eingeschlossen werden. Diese Funktion ermöglicht es Ihnen, die benutzerdefinierten Header festzulegen, die ein Ziel erfordert. Sie können benutzerdefinierte Header für die Ereignisse festlegen, die an Azure Service Bus-Warteschlangen und -Themen übermittelt werden.
Von Azure Service Bus wird die Verwendung der folgenden Nachrichteneigenschaften beim Senden einzelner Nachrichten unterstützt.
Headername | Headertyp |
---|---|
MessageId |
Dynamisch |
PartitionKey |
Statisch oder dynamisch |
SessionId |
Statisch oder dynamisch |
CorrelationId |
Statisch oder dynamisch |
Label |
Statisch oder dynamisch |
ReplyTo |
Statisch oder dynamisch |
ReplyToSessionId |
Statisch oder dynamisch |
To |
Statisch oder dynamisch |
ViaPartitionKey |
Statisch oder dynamisch |
Hinweis
- Der Standardwert von
MessageId
ist die interne ID des Event Grid Ereignisses. Sie kann außer Kraft gesetzt werden. Beispielsweisedata.field
. - Sie können nur
SessionId
oderMessageId
festlegen.
Weitere Informationen finden Sie unter Benutzerdefinierte Übermittlungseigenschaften.
REST-Beispiele (für PUT)
Service Bus-Warteschlange
{
"properties":
{
"destination":
{
"endpointType": "ServiceBusQueue",
"properties":
{
"resourceId": "/subscriptions/<AZURE SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP NAME>/providers/Microsoft.ServiceBus/namespaces/<SERVICE BUS NAMESPACE NAME>/queues/<SERVICE BUS QUEUE NAME>"
}
},
"eventDeliverySchema": "EventGridSchema"
}
}
Service Bus-Warteschlange: Bereitstellung mit verwalteter Identität
{
"properties": {
"deliveryWithResourceIdentity":
{
"identity":
{
"type": "SystemAssigned"
},
"destination":
{
"endpointType": "ServiceBusQueue",
"properties":
{
"resourceId": "/subscriptions/<AZURE SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP NAME>/providers/Microsoft.ServiceBus/namespaces/<SERVICE BUS NAMESPACE NAME>/queues/<SERVICE BUS QUEUE NAME>"
}
}
},
"eventDeliverySchema": "EventGridSchema"
}
}
Service Bus-Topic
{
"properties":
{
"destination":
{
"endpointType": "ServiceBusTopic",
"properties":
{
"resourceId": "/subscriptions/<AZURE SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP NAME>/providers/Microsoft.ServiceBus/namespaces/<SERVICE BUS NAMESPACE NAME>/topics/<SERVICE BUS TOPIC NAME>"
}
},
"eventDeliverySchema": "EventGridSchema"
}
}
Service Bus-Thema: Bereitstellung mit verwalteter Identität
{
"properties":
{
"deliveryWithResourceIdentity":
{
"identity":
{
"type": "SystemAssigned"
},
"destination":
{
"endpointType": "ServiceBusTopic",
"properties":
{
"resourceId": "/subscriptions/<AZURE SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP NAME>/providers/Microsoft.ServiceBus/namespaces/<SERVICE BUS NAMESPACE NAME>/topics/<SERVICE BUS TOPIC NAME>"
}
}
},
"eventDeliverySchema": "EventGridSchema"
}
}
Hinweis
Wenn ein Failover für einen Service Bus-Namespace auftritt, für den georedundante Notfallwiederherstellung aktiviert ist, gibt der sekundäre Namespace keine Ereignisse an Event Grid aus. Sie müssen das Event Grid-Abonnement für den sekundären Namespace manuell hinzufügen.
Nächste Schritte
Eine Liste der unterstützten Ereignishandler finden Sie im Artikel zu Ereignishandlern.