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

Grade de Eventos do Azure suporta arquiteturas orientadas a eventos, roteando eventos das fontes para os handlers. Este artigo mostra como configurar filas e tópicos do Barramento de Serviço do Azure como manipuladores de eventos para eventos do Event Grid. Você configura a fila ou tópico para processar eventos em aplicações empresariais usando o portal Azure, CLI do Azure, Azure PowerShell ou API REST.

Pré-requisitos

Filas do Barramento de Serviço

Encaminhe eventos na Grade de Eventos diretamente para filas do Barramento de Serviço para usar em buffer ou cenários de comando e controle em aplicativos empresariais.

Configure uma fila do Barramento de Serviço usando o portal do Azure

No portal do Azure, ao criar uma assinatura de evento, selecione Barramento de Serviço Queue como tipo de endpoint e, em seguida, selecione Select a endpoint para escolher uma fila Barramento de Serviço.

Captura de tela da configuração de uma fila do Barramento de Serviço como manipulador de evento no Grade de Eventos do Azure.

Observação

Se você usar uma fila ou uma assinatura de tópico com sessão habilitada como destino, defina a propriedade de sessão no evento usando uma propriedade de entrega com o nome de cabeçalho SessionId.

Configure uma fila do Barramento de Serviço usando 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.

Configure uma fila do Barramento de Serviço usando Azure PowerShell

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

Direcione eventos no Event Grid diretamente para tópicos do Barramento de Serviço para cenários de mensagens de comando e controle.

Configure um tópico do Barramento de Serviço usando o portal do Azure

No portal do Azure, ao criar uma assinatura de evento, selecione Barramento de Serviço Topic como tipo de endpoint e, em seguida, selecione Select a endpoint para escolher um tópico Barramento de Serviço.

Captura de tela configurando um tópico do Barramento de Serviço como um gerenciador de eventos no Grade de Eventos do Azure.

Configure um tópico do Barramento de Serviço usando 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.

Configure um tópico de Barramento de Serviço usando Azure PowerShell

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 de evento.
aeg-delivery-count Número de tentativas realizadas para o evento.
aeg-event-type

Tipo do evento.

Pode ser um dos seguintes valores:

  • Validação de Assinatura
  • Notificação
  • Exclusão de assinatura
aeg-metadata-version

Versão dos 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 do Event Grid.

Quando você envia um evento para uma fila ou tópico do Barramento de Serviço como uma mensagem intermediada, o messageid da mensagem intermediada é um identificador interno do sistema.

O ID interno do sistema para a mensagem persiste durante a reentrega do evento, para que você possa evitar entregas duplicadas ativando a detecção de duplicados na entidade Barramento de Serviço. Defina a duração da detecção de duplicatas na entidade do Barramento de Serviço como o tempo de vida (TTL) do evento ou a duração máxima de nova tentativa, o que for maior.

Propriedades de entrega

Quando você usa assinaturas de eventos, pode configurar cabeçalhos HTTP para incluir em eventos entregues. Essa capacidade suporta a definição de cabeçalhos personalizados que o destino exige. Você pode definir cabeçalhos personalizados nos eventos que são entregues a filas e tópicos do Barramento de Serviço do Azure.

Barramento de Serviço do Azure suporta as seguintes propriedades de mensagem quando você envia 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, use 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 de Desastre Geográfico, o namespace secundário não emite eventos para a Grade de Eventos. Você deve adicionar manualmente a assinatura do Event Grid para o namespace secundário.

Para uma lista de manipuladores de eventos suportados, veja o artigo Gerenciadores de eventos .