Очереди и разделы служебной шины в качестве обработчиков событий для событий службы "Сетка событий Azure"

Обработчик событий получает события из источника событий через сетку событий и обрабатывает эти события. Для обработки событий и Служебная шина Azure можно использовать экземпляры нескольких служб Azure. В этой статье показано, как использовать очередь или раздел служебная шина в качестве обработчика событий из сетки событий.

Очереди служебной шины

События в сетке событий можно направлять непосредственно в очереди служебная шина для использования в буферизации или сценариях управления и команд в корпоративных приложениях.

Использование портала Azure

В портал Azure при создании подписки на события выберите служебная шина очередь в качестве типа конечной точки и выберите конечную точку, чтобы выбрать очередь служебная шина.

Screenshot showing the configuration of a Service Bus queue handler.

Примечание.

Очереди с поддержкой сеансов не поддерживаются в качестве обработчиков событий для событий в службе "Сетка событий Azure".

Использование Azure CLI

Используйте команду с заданным az eventgrid event-subscription create--endpoint-type и --endpointservicebusqueue заданным значением/subscriptions/{AZURE SUBSCRIPTION}/resourceGroups/<RESOURCE GROUP NAME>/providers/Microsoft.ServiceBus/namespaces/<NAMESPACE NAME>/queues/<QUEUE NAME>. Приведем пример:

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

Вы также можете использовать az eventgrid topic event-subscription команду для пользовательских тем, az eventgrid system-topic event-subscription команду для системных разделов и az eventgrid partner topic event-subscription create команду для разделов партнеров.

Использование Azure PowerShell

Используйте команду New-AzEventGridSubscription с -EndpointType заданным значением servicebusqueue и -Endpoint значением /subscriptions/{AZURE SUBSCRIPTION}/resourceGroups/<RESOURCE GROUP NAME>/providers/Microsoft.ServiceBus/namespaces/<NAMESPACE NAME>/queues/<QUEUE NAME>. Приведем пример:

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

Вы также можете использовать New-AzEventGridSystemTopicEventSubscription команду для системных разделов и New-AzEventGridPartnerTopicEventSubscription команду для разделов партнеров.

Разделы служебной шины

События в службе "Сетка событий" можно направлять непосредственно в служебная шина разделы для сценариев обмена сообщениями команд и управления ими.

Использование портала Azure

В портал Azure при создании подписки на события выберите служебная шина Раздел в качестве типа конечной точки и выберите конечную точку, чтобы выбрать раздел служебная шина.

Screenshot showing the configuration of a Service Bus topic handler.

Использование Azure CLI

Используйте команду с заданным az eventgrid event-subscription create--endpoint-type и --endpointservicebustopic заданным значением/subscriptions/{AZURE SUBSCRIPTION}/resourceGroups/<RESOURCE GROUP NAME>/providers/Microsoft.ServiceBus/namespaces/<NAMESPACE NAME>/topics/<TOPIC NAME>. Приведем пример:

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

Вы также можете использовать az eventgrid topic event-subscription команду для пользовательских тем, az eventgrid system-topic event-subscription команду для системных разделов и az eventgrid partner topic event-subscription create команду для разделов партнеров.

Использование Azure PowerShell

Используйте команду New-AzEventGridSubscription с -EndpointType заданным значением servicebustopic и -Endpoint значением /subscriptions/{AZURE SUBSCRIPTION}/resourceGroups/<RESOURCE GROUP NAME>/providers/Microsoft.ServiceBus/namespaces/<NAMESPACE NAME>/topics/<TOPIC NAME>. Приведем пример:

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

Вы также можете использовать New-AzEventGridSystemTopicEventSubscription команду для системных разделов и New-AzEventGridPartnerTopicEventSubscription команду для разделов партнеров.

Заголовки сообщений

Ниже приведены свойства, которые предоставляются в заголовках сообщений.

Имя свойства Description
aeg-subscription-name Имя подписки на события.
aeg-delivery-count Число попыток, выполненных для события.
aeg-event-type

Тип события.

Может иметь одно из следующих значений.

  • SubscriptionValidation
  • Notification
  • SubscriptionDeletion
aeg-metadata-version

Версия метаданных события.

Для схемы событий Сетки событий это свойство представляет версию метаданных, а для схемы событий облака — версию спецификации.

aeg-data-version

Версия данных события.

Для схемы событий Сетки событий это свойство представляет версию данных, а для схемы событий облака оно не используется.

aeg-output-event-id Идентификатор события Сетки событий.

При отправке события в очередь или раздел служебная шина в виде сообщения messageid с брокером это внутренний идентификатор системы.

Внутренний идентификатор системы для сообщения сохраняется в повторном развертывании события, чтобы избежать дублирования поставок, включив обнаружение повторяющихся данных в сущности служебной шины. Рекомендуется установить длительность поиска повторяющихся данных в сущности служебной шины равной сроку жизни события или максимальному периоду времени между повторами, в зависимости от того, какое из этих значений больше.

Свойства доставки

Подписки на события позволяют настраивать заголовки HTTP, которые включаются в доставляемые события. Эта возможность позволяет задать пользовательские заголовки, необходимые для назначения. Пользовательские заголовки можно задавать для событий, которые доставляются в очереди и разделы служебной шины Azure.

Служебная шина Azure поддерживает использование перечисленных ниже свойств сообщений при отправке отдельных сообщений.

Имя заголовка Тип заголовка
MessageId Динамический
PartitionKey Статическая или динамическая
SessionId Статическая или динамическая
CorrelationId Статическая или динамическая
Label Статическая или динамическая
ReplyTo Статическая или динамическая
ReplyToSessionId Статическая или динамическая
To Статическая или динамическая
ViaPartitionKey Статическая или динамическая

Примечание.

  • Значение по умолчанию для параметра MessageId — это внутренний идентификатор события Сетки событий. Его можно переопределить. Например, data.field.
  • Вы можете задать SessionId или MessageId.

Дополнительные сведения см. в разделе Пользовательские свойства доставки.

Примеры REST (для PUT)

Очередь служебной шины

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

Очередь служебной шины — доставка с использованием управляемого удостоверения

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

Раздел служебной шины

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

Раздел служебной шины — доставка с использованием управляемого удостоверения

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

Примечание.

Когда происходит отработка отказа для пространства имен служебная шина с поддержкой геообработки аварийного восстановления, дополнительное пространство имен не выдает события в сетку событий. Необходимо вручную добавить подписку Сетки событий для дополнительного пространства имен.

Следующие шаги

См. список поддерживаемых обработчиков событий в статье Обработчики событий.