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.
Nota
Se você estiver usando a assinatura de fila/tópico habilitada para sessão como destino, precisará definir a propriedade session no evento usando Delivery Property com o nome de cabeçalho 'SessionId'.
Utilizar a CLI do Azure
Use o az eventgrid event-subscription create
comando com --endpoint-type
set to servicebusqueue
e --endpoint
set to /subscriptions/{AZURE SUBSCRIPTION}/resourceGroups/<RESOURCE GROUP NAME>/providers/Microsoft.ServiceBus/namespaces/<NAMESPACE NAME>/queues/<QUEUE NAME>
. 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 az eventgrid topic event-subscription
comando para tópicos personalizados, o comando para tópicos do az eventgrid system-topic event-subscription
sistema e o 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 servicebusqueue
e -Endpoint
definido como /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 New-AzEventGridSystemTopicEventSubscription
sistema e o 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.
Utilizar a CLI do Azure
Use o az eventgrid event-subscription create
comando com --endpoint-type
set to servicebustopic
e --endpoint
set to /subscriptions/{AZURE SUBSCRIPTION}/resourceGroups/<RESOURCE GROUP NAME>/providers/Microsoft.ServiceBus/namespaces/<NAMESPACE NAME>/topics/<TOPIC NAME>
. 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 az eventgrid topic event-subscription
comando para tópicos personalizados, o comando para tópicos do az eventgrid system-topic event-subscription
sistema e o 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 servicebustopic
e -Endpoint
definido como /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 New-AzEventGridSystemTopicEventSubscription
sistema e o 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:
|
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
ouMessageId
.
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 Recuperação de Desastres Geográficos, 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.