Tópicos e filas 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 origem de evento por meio da Grade de Eventos e processa esses eventos. Você pode usar instâncias de alguns serviços do Azure para lidar com eventos, e o Barramento de Serviço do Azure é um deles. Este artigo mostra como usar uma fila ou um tópico do Barramento de Serviço como um manipulador para eventos da Grade de Eventos.

Filas do Barramento de Serviço

Você pode encaminhar 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 empresariais.

Usar o portal do Azure

No portal do Azure, ao criar uma assinatura de evento, selecione a 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.

Observação

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

Usar a CLI do Azure

Use o comando az eventgrid event-subscription create com --endpoint-type definido como servicebusqueue e --endpoint definido como /subscriptions/{AZURE SUBSCRIPTION}/resourceGroups/<RESOURCE GROUP NAME>/providers/Microsoft.ServiceBus/namespaces/<NAMESPACE NAME>/queues/<QUEUE NAME>. Aqui está 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 az eventgrid topic event-subscription para tópicos personalizados, o comando az eventgrid system-topic event-subscription para tópicos do sistema e o comando az eventgrid partner topic event-subscription create para tópicos de parceiro.

Usar PowerShell do Azure

Use o comando New-AzEventGridSubscription com -EndpointType definido como servicebusqueue e -Endpoint definido como /subscriptions/{AZURE SUBSCRIPTION}/resourceGroups/<RESOURCE GROUP NAME>/providers/Microsoft.ServiceBus/namespaces/<NAMESPACE NAME>/queues/<QUEUE NAME>. Aqui está 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 New-AzEventGridSystemTopicEventSubscription para tópicos do sistema e o comando New-AzEventGridPartnerTopicEventSubscription para tópicos de parceiro.

Tópicos do Barramento de Serviço

Você pode rotear eventos na Grade de Eventos diretamente para tópicos do Barramento de Serviço para cenários de mensagens de controle e comando.

Usar o portal do Azure

No portal do Azure, ao criar uma assinatura de evento, selecione o 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.

Usar a CLI do Azure

Use o comando az eventgrid event-subscription create com --endpoint-type definido como servicebustopic e --endpoint definido como /subscriptions/{AZURE SUBSCRIPTION}/resourceGroups/<RESOURCE GROUP NAME>/providers/Microsoft.ServiceBus/namespaces/<NAMESPACE NAME>/topics/<TOPIC NAME>. Aqui está 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 az eventgrid topic event-subscription para tópicos personalizados, o comando az eventgrid system-topic event-subscription para tópicos do sistema e o comando az eventgrid partner topic event-subscription create para tópicos de parceiro.

Usar PowerShell do Azure

Use o comando New-AzEventGridSubscription com -EndpointType definido como servicebustopic e -Endpoint definido como /subscriptions/{AZURE SUBSCRIPTION}/resourceGroups/<RESOURCE GROUP NAME>/providers/Microsoft.ServiceBus/namespaces/<NAMESPACE NAME>/topics/<TOPIC NAME>. Aqui está 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 New-AzEventGridSystemTopicEventSubscription para tópicos do sistema e o comando New-AzEventGridPartnerTopicEventSubscription para tópicos de parceiro.

Cabeçalhos de mensagem

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

Nome da propriedade Descrição
aeg-subscription-name Nome da assinatura do evento.
aeg-delivery-count Número de tentativas feitas para o evento.
aeg-event-type

Tipo do evento.

Pode ser um dos seguintes valores:

  • SubscriptionValidation
  • Notificação
  • SubscriptionDeletion
aeg-metadata-version

A versão de metadados do evento.

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

aeg-data-version

Versão de dados do evento.

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

aeg-output-event-id ID do evento da Grade de Eventos.

Quando você enviar um evento para uma fila ou um tópico do Barramento de Serviço como uma mensagem agenciada, o messageid da mensagem agenciada é uma ID interna do sistema.

A ID interna do sistema para a mensagem é mantida na nova entrega do evento para que você possa evitar entregas duplicadas ativando a detecção de duplicidades na entidade do barramento de serviço. Recomendamos que você habilite a duração da detecção de duplicidades na entidade do Barramento de Serviço como TTL (tempo de vida) do evento ou duração máxima de repetição, o que for maior.

Propriedades de entrega

As assinaturas de evento permitem que você configure cabeçalhos HTTP que estão incluídos nos eventos entregues. Essa funcionalidade permite que você defina cabeçalhos personalizados exigidos pelo destino. Você pode definir cabeçalhos personalizados nos eventos que são entregues a filas e tópicos do Barramento de Serviço do Azure.

O Barramento de Serviço do Azure permite o uso das seguintes propriedades de mensagem ao enviar mensagens individuais.

Nome do cabeçalho Tipo de cabeçalho
MessageId Dinâmico
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

Observação

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

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

Exemplos de REST (para PUT)

Fila do Barramento de Serviço

{
    "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 Barramento de Serviço – 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 Barramento de Serviço

{
    "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 Barramento de Serviço – 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"
	}
}

Observação

Quando ocorre um failover para um namespace do Barramento de Serviço habilitado para Recuperação Geográfica, 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óximas etapas

Consulte o artigo Manipuladores de eventos para obter uma lista dos manipuladores de eventos compatíveis.