Konfigurieren von Service Bus-Warteschlangen und -Themen als Ereignishandler für Azure Event Grid-Ereignisse

Azure Event Grid unterstützt ereignisgesteuerte Architekturen, indem Ereignisse von Quellen zu Handlern geleitet werden. Dieser Artikel zeigt Ihnen, wie Sie Azure Service Bus-Warteschlangen und -Themen als Ereignishandler für Event Grid-Ereignisse konfigurieren können. Sie konfigurieren die Warteschlange oder das Thema so, dass Ereignisse in Unternehmensanwendungen verarbeitet werden, indem Sie das Azure-Portal, die Azure CLI, Azure PowerShell oder die REST API verwenden.

Voraussetzungen

Service Bus-Warteschlangen

Routen Sie Ereignisse in Event Grid direkt zu Service Bus-Warteschlangen für Puffer- oder Kommando- und Kontrollszenarien in Unternehmensanwendungen.

Konfigurieren Sie eine Service Bus-Warteschlange mithilfe des Azure-Portals

Im Azure-Portal wählt man beim Erstellen eines Event-Abonnements Service Bus Queue als Endpunkttyp aus und dann Select an endpoint, um eine Service Bus Queue auszuwählen.

Screenshot der Konfiguration einer ServiceBus-Warteschlange als Ereignishandler in Azure Event Grid.

Hinweis

Wenn Sie eine sitzungsaktivierte Warteschlange oder ein Themenabonnement als Ziel verwenden, legen Sie für das Ereignis die Sitzungseigenschaft fest, indem Sie eine Übermittlungseigenschaft mit dem Headernamen SessionId verwenden.

Konfigurieren Sie eine Service Bus Queue mit der Azure CLI

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.

Konfigurieren einer Service Bus-Warteschlange 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

Routen Sie Ereignisse in Event Grid direkt zu Service Bus-Themen für Kommando- und Kontrollmessaging-Szenarien.

Konfigurieren Sie ein Service Bus-Thema mithilfe des Azure-Portals

Im Azure-Portal wählen Sie beim Erstellen eines Ereignisabonnements Service Bus-Thema als Endpunkttyp aus und dann Endpunkt auswählen, um ein Service Bus-Thema auszuwählen.

Screenshot der Konfiguration eines Service Bus-Themas als Event Handler in Azure Event Grid.

Konfigurieren Sie ein Service Bus-Thema mit der Azure CLI

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.

Konfigurieren eines Service Bus-Themas 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:

  • Abonnementvalidierung
  • Benachrichtigung
  • Abonnementlöschung
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 der Nachricht bleibt während der erneuten Zustellung des Ereignisses erhalten, sodass Sie doppelte Zustellungen vermeiden können, indem Sie die Duplikaterkennung auf der Service Bus-Entität aktivieren. Legen Sie für die Service Bus-Entität die Dauer der Duplikaterkennung entweder auf die Gültigkeitsdauer (Time-to-live, TTL) des Ereignisses oder auf die maximale Dauer für Wiederholungsversuche fest, je nachdem, welcher Wert länger ist.

Übermittlungseigenschaften

Wenn Sie Event-Abonnements verwenden, können Sie HTTP-Header einrichten, die in ausgelieferte Events aufgenommen werden. Diese Funktion unterstützt das Setzen benutzerdefinierter Header, die das Ziel benötigt. Du kannst benutzerdefinierte Header für Ereignisse festlegen, die an Azure Service Bus-Warteschlangen und Topics übermittelt werden.

Azure Service Bus unterstützt folgende Nachrichteneigenschaften, wenn Sie einzelne Nachrichten senden.

Kopfzeilenname 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. Verwenden Sie z. B. data.field.
  • Sie können nur SessionId oder MessageId 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 es bei einem Service Bus-Namespace, für den Geo-Disaster Recovery aktiviert ist, zu einem Failover kommt, sendet der sekundäre Namespace keine Ereignisse an Event Grid. Du musst das Event Grid-Abonnement manuell für den sekundären Namensraum hinzufügen.

Eine Liste der unterstützten Ereignishandler finden Sie im Artikel zu Ereignishandlern .