Kolejki i tematy usługi Service Bus jako programy obsługi zdarzeń dla zdarzeń usługi Azure Event Grid

Program obsługi zdarzeń odbiera zdarzenia ze źródła zdarzeń za pośrednictwem usługi Event Grid i przetwarza te zdarzenia. Możesz użyć wystąpień kilku usług platformy Azure do obsługi zdarzeń, a usługa Azure Service Bus jest jedną z nich. W tym artykule pokazano, jak używać kolejki lub tematu usługi Service Bus jako procedury obsługi zdarzeń z usługi Event Grid.

Kolejki usługi Service Bus

Zdarzenia w usłudze Event Grid można kierować bezpośrednio do kolejek usługi Service Bus do użycia w scenariuszach buforowania lub sterowania i sterowania w aplikacjach dla przedsiębiorstw.

Korzystanie z witryny Azure Portal

W witrynie Azure Portal podczas tworzenia subskrypcji zdarzeń wybierz pozycję Kolejka usługi Service Bus jako typ punktu końcowego, a następnie kliknij pozycję Wybierz punkt końcowy , aby wybrać kolejkę usługi Service Bus.

Screenshot showing the configuration of a Service Bus queue handler.

Uwaga

Kolejki z obsługą sesji nie są obsługiwane jako programy obsługi zdarzeń dla zdarzeń usługi Azure Event Grid

Interfejs wiersza polecenia platformy Azure

Użyj polecenia z ustawioną az eventgrid event-subscription create wartością --endpoint-typeservicebusqueue i --endpoint ustaw wartość /subscriptions/{AZURE SUBSCRIPTION}/resourceGroups/<RESOURCE GROUP NAME>/providers/Microsoft.ServiceBus/namespaces/<NAMESPACE NAME>/queues/<QUEUE NAME>. Oto przykład:

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

Możesz również użyć az eventgrid topic event-subscription polecenia dla tematów niestandardowych, az eventgrid system-topic event-subscription polecenia dla tematów systemowych i az eventgrid partner topic event-subscription create polecenia dla tematów partnerskich.

Korzystanie z programu Azure PowerShell

Użyj polecenia New-AzEventGridSubscription z ustawioną wartością -EndpointTypeservicebusqueue i -Endpoint ustaw wartość /subscriptions/{AZURE SUBSCRIPTION}/resourceGroups/<RESOURCE GROUP NAME>/providers/Microsoft.ServiceBus/namespaces/<NAMESPACE NAME>/queues/<QUEUE NAME>. Oto przykład:

New-AzEventGridSubscription -ResourceGroup MyResourceGroup `
            -TopicName Topic1 `
            -EndpointType servicebusqueue `
            -Endpoint /subscriptions/{SubID}/resourceGroups/TestRG/providers/Microsoft.ServiceBus/namespaces/ns1/queues/queue1 `
            -EventSubscriptionName EventSubscription1

Możesz również użyć New-AzEventGridSystemTopicEventSubscription polecenia dla tematów systemowych i New-AzEventGridPartnerTopicEventSubscription polecenia dla tematów partnerskich.

Tematy usługi Service Bus

Zdarzenia w usłudze Event Grid można kierować bezpośrednio do tematów usługi Service Bus na potrzeby scenariuszy obsługi komunikatów poleceń i sterowania nimi.

Korzystanie z witryny Azure Portal

W witrynie Azure Portal podczas tworzenia subskrypcji zdarzeń wybierz pozycję Temat usługi Service Bus jako typ punktu końcowego, a następnie kliknij pozycję Wybierz punkt końcowy , aby wybrać temat usługi Service Bus.

Screenshot showing the configuration of a Service Bus topic handler.

Interfejs wiersza polecenia platformy Azure

Użyj polecenia z ustawioną az eventgrid event-subscription create wartością --endpoint-typeservicebustopic i --endpoint ustaw wartość /subscriptions/{AZURE SUBSCRIPTION}/resourceGroups/<RESOURCE GROUP NAME>/providers/Microsoft.ServiceBus/namespaces/<NAMESPACE NAME>/topics/<TOPIC NAME>. Oto przykład:

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

Możesz również użyć az eventgrid topic event-subscription polecenia dla tematów niestandardowych, az eventgrid system-topic event-subscription polecenia dla tematów systemowych i az eventgrid partner topic event-subscription create polecenia dla tematów partnerskich.

Korzystanie z programu Azure PowerShell

Użyj polecenia New-AzEventGridSubscription z ustawioną wartością -EndpointTypeservicebustopic i -Endpoint ustaw wartość /subscriptions/{AZURE SUBSCRIPTION}/resourceGroups/<RESOURCE GROUP NAME>/providers/Microsoft.ServiceBus/namespaces/<NAMESPACE NAME>/topics/<TOPIC NAME>. Oto przykład:

New-AzEventGridSubscription -ResourceGroup MyResourceGroup `
            -TopicName Topic1 `
            -EndpointType servicebustopic `
            -Endpoint /subscriptions/{SubID}/resourceGroups/TestRG/providers/Microsoft.ServiceBus/namespaces/ns1/topics/topic1 `
            -EventSubscriptionName EventSubscription1

Możesz również użyć New-AzEventGridSystemTopicEventSubscription polecenia dla tematów systemowych i New-AzEventGridPartnerTopicEventSubscription polecenia dla tematów partnerskich.

Nagłówki komunikatów

Są to właściwości odbierane w nagłówkach komunikatów:

Nazwa właściwości Opis
aeg-subscription-name Nazwa subskrypcji zdarzeń.
aeg-delivery-count Liczba prób wykonanych dla zdarzenia.
aeg-event-type

Typ zdarzenia.

Może to być jedna z następujących wartości:

  • SubskrypcjaValidation
  • Powiadomienie
  • SubskrypcjaDeletion
aeg-metadata-version

Wersja metadanych zdarzenia.

W przypadku schematu zdarzeń usługi Event Grid ta właściwość reprezentuje wersję metadanych i schemat zdarzeń w chmurze, reprezentuje wersję specyfikacji.

aeg-data-version

Wersja danych zdarzenia.

W przypadku schematu zdarzeń usługi Event Grid ta właściwość reprezentuje wersję danych i schemat zdarzeń w chmurze, ale nie ma zastosowania.

aeg-output-event-id Identyfikator zdarzenia usługi Event Grid.

Po wysłaniu zdarzenia do kolejki usługi Service Bus lub tematu jako komunikatu messageid obsługiwanego przez brokera komunikat komunikat jest wewnętrznym identyfikatorem systemu.

Wewnętrzny identyfikator systemu komunikatu jest utrzymywany w całej ponownej instalacji zdarzenia, dzięki czemu można uniknąć zduplikowanych dostaw, włączając wykrywanie duplikatów w jednostce usługi Service Bus. Zalecamy włączenie czasu trwania wykrywania duplikatów w jednostce usługi Service Bus jako czasu wygaśnięcia (TTL) zdarzenia lub maksymalnego czasu trwania ponawiania, w zależności od tego, co jest dłuższe.

Właściwości dostarczania

Subskrypcje zdarzeń umożliwiają konfigurowanie nagłówków HTTP uwzględnionych w dostarczanych zdarzeniach. Ta funkcja umożliwia ustawienie niestandardowych nagłówków, których wymaga miejsce docelowe. Możesz ustawić nagłówki niestandardowe dla zdarzeń dostarczanych do kolejek i tematów usługi Azure Service Bus.

Usługa Azure Service Bus obsługuje używanie następujących właściwości komunikatów podczas wysyłania pojedynczych komunikatów.

Nazwa nagłówka Typ nagłówka
MessageId Dynamiczny
PartitionKey Tryb statyczny lub dynamiczny
SessionId Tryb statyczny lub dynamiczny
CorrelationId Tryb statyczny lub dynamiczny
Label Tryb statyczny lub dynamiczny
ReplyTo Tryb statyczny lub dynamiczny
ReplyToSessionId Tryb statyczny lub dynamiczny
To Tryb statyczny lub dynamiczny
ViaPartitionKey Tryb statyczny lub dynamiczny

Uwaga

  • Wartość MessageId domyślna to wewnętrzny identyfikator zdarzenia usługi Event Grid. Można go zastąpić. Na przykład data.field.
  • Można ustawić tylko wartość SessionId lub MessageId.

Aby uzyskać więcej informacji, zobacz Niestandardowe właściwości dostarczania.

Przykłady REST (dla PUT)

Kolejka usługi Service Bus

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

Kolejka usługi Service Bus — dostarczanie przy użyciu tożsamości zarządzanej

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

Temat usługi Service Bus

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

Temat usługi Service Bus — dostarczanie za pomocą tożsamości zarządzanej

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

Uwaga

Gdy nastąpi przejście w tryb failover dla przestrzeni nazw usługi Service Bus z włączoną geograficzną odzyskiwaniem po awarii, pomocnicza przestrzeń nazw nie emituje zdarzeń do usługi Event Grid. Musisz ręcznie dodać subskrypcję usługi Event Grid dla dodatkowej przestrzeni nazw.

Następne kroki

Zobacz artykuł Procedury obsługi zdarzeń, aby uzyskać listę obsługiwanych programów obsługi zdarzeń.