Sdílet prostřednictvím


Fronty a témata služby Service Bus jako obslužné rutiny událostí pro události Azure Event Gridu

Obslužná rutina události přijímá události ze zdroje událostí prostřednictvím event Gridu a zpracovává tyto události. Instance několika služeb Azure můžete použít ke zpracování událostí a Azure Service Bus je jedním z nich. V tomto článku se dozvíte, jak použít frontu nebo téma služby Service Bus jako obslužnou rutinu událostí z Event Gridu.

Fronty služby Service Bus

Události ve službě Event Grid můžete směrovat přímo do front Service Bus pro použití ve scénářích ukládání do vyrovnávací paměti nebo příkazů a řízení v podnikových aplikacích.

Použití webu Azure Portal

Na webu Azure Portal při vytváření odběru událostí vyberte frontu služby Service Bus jako typ koncového bodu a potom kliknutím vyberte koncový bod a zvolte frontu služby Service Bus.

Snímek obrazovky znázorňující konfiguraci obslužné rutiny fronty služby Service Bus

Poznámka:

Pokud jako cíl používáte odběr fronty nebo tématu s povolenou relací, musíte vlastnost relace události nastavit pomocí vlastnosti doručení s názvem SessionId.

Použití Azure CLI

az eventgrid event-subscription create Použijte příkaz s nastaveným --endpoint-type servicebusqueue a --endpoint nastaveným na /subscriptions/{AZURE SUBSCRIPTION}/resourceGroups/<RESOURCE GROUP NAME>/providers/Microsoft.ServiceBus/namespaces/<NAMESPACE NAME>/queues/<QUEUE NAME>. Tady je příklad:

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

Příkaz můžete použít az eventgrid topic event-subscription také pro vlastní témata, az eventgrid system-topic event-subscription příkaz pro systémová témata a az eventgrid partner topic event-subscription create příkaz pro témata partnerů.

Použití Azure Powershell

Použijte příkaz New-AzEventGridSubscription s nastavenou servicebusqueue -EndpointType na a -Endpoint nastavenou na /subscriptions/{AZURE SUBSCRIPTION}/resourceGroups/<RESOURCE GROUP NAME>/providers/Microsoft.ServiceBus/namespaces/<NAMESPACE NAME>/queues/<QUEUE NAME>. Tady je příklad:

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

Příkaz můžete použít New-AzEventGridSystemTopicEventSubscription také pro systémová témata a New-AzEventGridPartnerTopicEventSubscription příkaz pro témata partnerů.

Témata služby Service Bus

Události ve službě Event Grid můžete směrovat přímo do témat služby Service Bus pro scénáře zasílání zpráv pomocí příkazů a řízení.

Použití webu Azure Portal

Na webu Azure Portal při vytváření odběru událostí vyberte jako typ koncového bodu téma služby Service Bus a pak kliknutím vyberte koncový bod a zvolte téma služby Service Bus.

Snímek obrazovky znázorňující konfiguraci obslužné rutiny tématu služby Service Bus

Použití Azure CLI

az eventgrid event-subscription create Použijte příkaz s nastaveným --endpoint-type servicebustopic a --endpoint nastaveným na /subscriptions/{AZURE SUBSCRIPTION}/resourceGroups/<RESOURCE GROUP NAME>/providers/Microsoft.ServiceBus/namespaces/<NAMESPACE NAME>/topics/<TOPIC NAME>. Tady je příklad:

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

Příkaz můžete použít az eventgrid topic event-subscription také pro vlastní témata, az eventgrid system-topic event-subscription příkaz pro systémová témata a az eventgrid partner topic event-subscription create příkaz pro témata partnerů.

Použití Azure Powershell

Použijte příkaz New-AzEventGridSubscription s nastavenou servicebustopic -EndpointType na a -Endpoint nastavenou na /subscriptions/{AZURE SUBSCRIPTION}/resourceGroups/<RESOURCE GROUP NAME>/providers/Microsoft.ServiceBus/namespaces/<NAMESPACE NAME>/topics/<TOPIC NAME>. Tady je příklad:

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

Příkaz můžete použít New-AzEventGridSystemTopicEventSubscription také pro systémová témata a New-AzEventGridPartnerTopicEventSubscription příkaz pro témata partnerů.

Záhlaví zpráv

Toto jsou vlastnosti, které obdržíte v záhlaví zprávy:

Název vlastnosti Popis
aeg-subscription-name Název odběru události.
aeg-delivery-count Počet pokusů o událost
aeg-event-type

Typ události

Může to být jedna z následujících hodnot:

  • SubscriptionValidation
  • Notification
  • SubscriptionDeletion
aeg-metadata-version

Verze metadat události

Pro schéma událostí Event Gridu tato vlastnost představuje verzi metadat a pro schéma cloudové události představuje verzi specifikace.

aeg-data-version

Datová verze události

U schématu událostí Event Gridu tato vlastnost představuje datovou verzi a pro schéma cloudové události se nepoužije.

aeg-output-event-id ID události Event Gridu.

Když odešlete událost do fronty nebo tématu služby Service Bus jako zprostředkovanou zprávu, messageid zprostředkovaná zpráva je interní SYSTÉMOVÉ ID.

Interní SYSTÉMOVÉ ID zprávy se udržuje v rámci opětovného nasazení události, abyste se vyhnuli duplicitním dodávkám zapnutím detekce duplicit v entitě služby Service Bus. Doporučujeme povolit dobu trvání detekce duplicit u entity Service Bus tak, aby byla hodnota TTL (time-to-live) události nebo maximální doba opakování podle toho, která hodnota je delší.

Vlastnosti doručení

Odběry událostí umožňují nastavit hlavičky HTTP, které jsou součástí doručených událostí. Tato funkce umožňuje nastavit vlastní hlavičky, které cíl vyžaduje. Vlastní hlavičky můžete nastavit u událostí, které se doručují do front a témat služby Azure Service Bus.

Azure Service Bus podporuje použití následujících vlastností zpráv při odesílání jednotlivých zpráv.

Název hlavičky Typ záhlaví
MessageId dynamicky,
PartitionKey Statické nebo dynamické
SessionId Statické nebo dynamické
CorrelationId Statické nebo dynamické
Label Statické nebo dynamické
ReplyTo Statické nebo dynamické
ReplyToSessionId Statické nebo dynamické
To Statické nebo dynamické
ViaPartitionKey Statické nebo dynamické

Poznámka:

  • Výchozí hodnota MessageId je interní ID události Event Gridu. Můžete ho přepsat. Například data.field.
  • Můžete nastavit pouze jednu SessionId nebo MessageId.

Další informace naleznete v tématu Vlastní vlastnosti doručení.

Příklady REST (pro PUT)

Fronta služby 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"
	}
}

Fronta služby Service Bus – doručování se spravovanou identitou

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

Téma služby 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"
	}
}

Téma služby Service Bus – doručování se spravovanou identitou

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

Poznámka:

Pokud dojde k převzetí služeb při selhání pro obor názvů služby Service Bus, který je povolen geograficky zotavení po havárii , sekundární obor názvů negeneruje události do Event Gridu. Musíte ručně přidat odběr služby Event Grid pro sekundární obor názvů.

Další kroky

Seznam podporovaných obslužných rutin událostí najdete v článku Obslužné rutiny událostí.