Filas e tópicos do Barramento de Serviço como manipuladores de eventos para eventos da Grade de Eventos do Azure

Um manipulador de eventos recebe eventos de uma fonte de eventos por meio da Grade de Eventos e processa esses eventos. Você pode usar instâncias de alguns serviços do Azure para manipular eventos e o Barramento de Serviço do Azure é um deles. Este artigo mostra como usar uma fila ou tópico do Service Bus como um manipulador para eventos da Grade de Eventos.

Filas do Service Bus

Você pode rotear eventos na Grade de Eventos diretamente para filas do Barramento de Serviço para uso em buffer ou cenários de comando e controle em aplicativos corporativos.

Utilizar o portal do Azure

No portal do Azure, ao criar uma assinatura de evento, selecione Fila do Barramento de Serviço como o tipo de ponto de extremidade e clique em selecionar um ponto de extremidade para escolher uma fila do Barramento de Serviço.

Screenshot showing the configuration of a Service Bus queue handler.

Nota

Não há suporte para filas habilitadas de sessão como manipuladores de eventos para eventos da Grade de Eventos do Azure

Utilizar a CLI do Azure

Use o az eventgrid event-subscription create comando com --endpoint-type set to e --endpoint set to /subscriptions/{AZURE SUBSCRIPTION}/resourceGroups/<RESOURCE GROUP NAME>/providers/Microsoft.ServiceBus/namespaces/<NAMESPACE NAME>/queues/<QUEUE NAME>servicebusqueue . Eis um exemplo:

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

Você também pode usar o comando para tópicos personalizados, o comando para tópicos do sistema e o az eventgrid topic event-subscriptionaz eventgrid system-topic event-subscription comando para tópicos de az eventgrid partner topic event-subscription create parceiros.

Utilizar o Azure PowerShell

Use o comando New-AzEventGridSubscription com -EndpointType definido como e -Endpoint definido como servicebusqueue/subscriptions/{AZURE SUBSCRIPTION}/resourceGroups/<RESOURCE GROUP NAME>/providers/Microsoft.ServiceBus/namespaces/<NAMESPACE NAME>/queues/<QUEUE NAME>. Eis um exemplo:

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

Você também pode usar o comando para tópicos do sistema e o New-AzEventGridSystemTopicEventSubscription comando para tópicos de New-AzEventGridPartnerTopicEventSubscription parceiros.

Tópicos do Service Bus

Você pode rotear eventos na Grade de Eventos diretamente para tópicos do Service Bus para cenários de mensagens de comando e controle.

Utilizar o portal do Azure

No portal do Azure, ao criar uma assinatura de evento, selecione Tópico do Barramento de Serviço como o tipo de ponto de extremidade e clique em selecionar um ponto de extremidade para escolher um tópico do Barramento de Serviço.

Screenshot showing the configuration of a Service Bus topic handler.

Utilizar a CLI do Azure

Use o az eventgrid event-subscription create comando com --endpoint-type set to e --endpoint set to /subscriptions/{AZURE SUBSCRIPTION}/resourceGroups/<RESOURCE GROUP NAME>/providers/Microsoft.ServiceBus/namespaces/<NAMESPACE NAME>/topics/<TOPIC NAME>servicebustopic . Eis um exemplo:

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

Você também pode usar o comando para tópicos personalizados, o comando para tópicos do sistema e o az eventgrid topic event-subscriptionaz eventgrid system-topic event-subscription comando para tópicos de az eventgrid partner topic event-subscription create parceiros.

Utilizar o Azure PowerShell

Use o comando New-AzEventGridSubscription com -EndpointType definido como e -Endpoint definido como servicebustopic/subscriptions/{AZURE SUBSCRIPTION}/resourceGroups/<RESOURCE GROUP NAME>/providers/Microsoft.ServiceBus/namespaces/<NAMESPACE NAME>/topics/<TOPIC NAME>. Eis um exemplo:

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

Você também pode usar o comando para tópicos do sistema e o New-AzEventGridSystemTopicEventSubscription comando para tópicos de New-AzEventGridPartnerTopicEventSubscription parceiros.

Cabeçalhos de mensagens

Estas são as propriedades que você recebe nos cabeçalhos das mensagens:

Property name Description
aeg-nome-subscrição Nome da assinatura do evento.
AEG-Contagem de entregas Número de tentativas feitas para o evento.
aeg-tipo de evento

Tipo do evento.

Pode ser um dos seguintes valores:

  • AssinaturaValidação
  • Notificação
  • SubscriçãoEliminação
aeg-metadata-versão

Versão de metadados do evento.

Para o esquema de eventos da Grade de Eventos, essa propriedade representa a versão dos metadados e, para o esquema de eventos na nuvem, representa a versão da especificação.

aeg-data-versão

Versão de dados do evento.

Para o esquema de eventos da Grade de Eventos, essa propriedade representa a versão dos dados e, para o esquema de eventos na nuvem, ela não se aplica.

aeg-output-event-id ID do evento Event Grid.

Quando você envia um evento para uma fila ou tópico do Service Bus como uma mensagem intermediada, a messageid mensagem intermediada é uma ID do sistema interno.

O ID do sistema interno da mensagem é mantido durante a reentrega do evento para que você possa evitar entregas duplicadas ativando a deteção de duplicados na entidade do barramento de serviço. Recomendamos que você habilite a duração da deteção de duplicados na entidade do Service Bus para ser o tempo de vida útil (TTL) do evento ou a duração máxima de repetição, o que for maior.

Propriedades de entrega

As subscrições de eventos permitem-lhe configurar cabeçalhos HTTP incluídos em eventos entregues. Esse recurso permite que você defina cabeçalhos personalizados que o destino exige. Você pode definir cabeçalhos personalizados nos eventos que são entregues às filas e tópicos do Barramento de Serviço do Azure.

O Barramento de Serviço do Azure dá suporte ao uso das seguintes propriedades de mensagem ao enviar mensagens únicas.

Nome do cabeçalho Tipo de cabeçalho
MessageId Dinâmica
PartitionKey Estático ou dinâmico
SessionId Estático ou dinâmico
CorrelationId Estático ou dinâmico
Label Estático ou dinâmico
ReplyTo Estático ou dinâmico
ReplyToSessionId Estático ou dinâmico
To Estático ou dinâmico
ViaPartitionKey Estático ou dinâmico

Nota

  • O valor padrão de MessageId é a ID interna do evento Event Grid. Você pode substituí-lo. Por exemplo, data.field.
  • Você só pode definir um SessionId ou MessageId.

Para obter mais informações, consulte Propriedades de entrega personalizadas.

Exemplos REST (para PUT)

Fila do 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"
	}
}

Fila do Service Bus - entrega com identidade gerenciada

{
	"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ópico do 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ópico do Service Bus - entrega com identidade gerenciada

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

Nota

Quando ocorre um failover para um namespace do Service Bus habilitado para Geo-DR, o namespace secundário não emite eventos para a Grade de Eventos. Você precisa adicionar manualmente a assinatura da Grade de Eventos para o namespace secundário.

Próximos passos

Consulte o artigo Manipuladores de eventos para obter uma lista de manipuladores de eventos suportados.