Compreender domínios de eventos para gerenciar tópicos da Grade de Eventos

Um domínio de evento é uma ferramenta de gerenciamento para um grande número de tópicos da Grade de Eventos relacionados ao mesmo aplicativo. Você pode pensar nele como um meta-tópico que pode ter milhares de tópicos individuais. Ele fornece um ponto de extremidade de publicação para todos os tópicos no domínio. Ao publicar um evento, o editor deve especificar o tópico de destino no domínio no qual deseja publicar. O editor pode enviar uma matriz ou um lote de eventos onde os eventos são enviados para diferentes tópicos no domínio. Consulte a seção Publicando eventos em um domínio de evento para obter detalhes.

Os domínios também oferecem controle de autenticação e autorização sobre cada tópico para que você possa particionar seus locatários. Este artigo descreve como usar domínios de eventos para gerenciar o fluxo de eventos personalizados para suas várias organizações de negócios, clientes ou aplicativos. Use domínios de evento para:

  • Gerencie arquiteturas de eventos multilocatários em escala.
  • Gerencie sua autenticação e autorização.
  • Particione seus tópicos sem gerenciar cada um individualmente.
  • Evite publicar individualmente em cada um dos pontos de extremidade do tópico.

Nota

O domínio do evento não se destina a suportar o cenário de transmissão em que um evento é enviado para um domínio e cada tópico no domínio recebe uma cópia do evento. Ao publicar eventos, o editor deve especificar o tópico de destino no domínio no qual deseja publicar. Se o editor quiser publicar a mesma carga útil de evento em vários tópicos no domínio, ele precisará duplicar a carga útil do evento, alterar o nome do tópico e publicá-los na Grade de Eventos usando o ponto de extremidade do domínio, individualmente ou em lote.

Exemplo de caso de uso

Os domínios de eventos são mais facilmente explicados usando um exemplo. Digamos que você execute a Contoso Construction Machinery, onde fabrica tratores, equipamentos de escavação e outras máquinas pesadas. Como parte da gestão do negócio, você envia informações em tempo real aos clientes sobre manutenção de equipamentos, integridade dos sistemas e atualizações de contratos. Todas essas informações vão para vários pontos de extremidade, incluindo seu aplicativo, pontos de extremidade do cliente e outra infraestrutura que os clientes configuraram.

Os domínios de evento permitem modelar a Contoso Construction Machinery como uma única entidade de evento. Cada um dos seus clientes é representado como um tópico dentro do domínio. A autenticação e a autorização são tratadas usando o Microsoft Entra ID. Cada um dos seus clientes pode subscrever o seu tópico e receber os seus eventos. O acesso gerenciado por meio do domínio do evento garante que eles só possam acessar seu tópico.

Ele também oferece um único ponto de extremidade, no qual você pode publicar todos os eventos do cliente. A Grade de Eventos se encarregará de garantir que cada tópico esteja ciente apenas dos eventos com escopo para seu locatário.

Image showing an example use case for using Event Grid domains.

Gestão de acesso

Com um domínio, você obtém autorização refinada e controle de autenticação sobre cada tópico por meio do controle de acesso baseado em função do Azure (Azure RBAC). Você pode usar essas funções para restringir cada locatário em seu aplicativo apenas aos tópicos aos quais você deseja conceder acesso a eles. O RBAC do Azure em domínios de evento funciona da mesma forma que o controle de acesso gerenciado funciona no restante da Grade de Eventos e do Azure. Use o RBAC do Azure para criar e impor definições de função personalizadas em domínios de evento.

Funções incorporadas

A Grade de Eventos tem duas definições de função internas para facilitar o trabalho do RBAC do Azure com domínios de evento. Essas funções são EventGrid, EventSubscription, Contributor e EventGrid, EventSubscription Reader. Você atribui essas funções a usuários que precisam se inscrever em tópicos no domínio do evento. Você define o escopo da atribuição de função apenas para o tópico que os usuários precisam assinar. Para obter informações sobre essas funções, consulte Funções internas para grade de eventos.

Subscrever tópicos

Inscrever-se em eventos para um tópico dentro de um domínio de evento é o mesmo que criar uma assinatura de evento em um tópico personalizado ou assinar um evento de um serviço do Azure.

Importante

O tópico de domínio é considerado um recurso gerenciado automaticamente na Grade de Eventos. Você pode criar uma assinatura de evento no escopo do domínio sem criar o tópico do domínio. Nesse caso, a Grade de Eventos cria automaticamente o tópico de domínio em seu nome. Claro, você ainda pode optar por criar o tópico de domínio manualmente. Esse comportamento permite que você se preocupe com um recurso a menos ao lidar com um grande número de tópicos de domínio. Quando a última assinatura de um tópico de domínio é excluída, o tópico de domínio também é excluído, independentemente de o tópico de domínio ter sido criado manualmente ou automaticamente.

Subscrições de âmbito de domínio

Os domínios de evento também permitem assinaturas de escopo de domínio. Uma assinatura de evento em um domínio de evento recebe todos os eventos enviados para o domínio, independentemente do tópico para o qual os eventos são enviados. As assinaturas de escopo de domínio podem ser úteis para fins de gerenciamento e auditoria.

Publicação em um domínio de evento

Ao criar um domínio de evento, você recebe um ponto de extremidade de publicação semelhante ao de se tivesse criado um tópico na Grade de Eventos. Para publicar eventos em qualquer tópico em um domínio de evento, envie os eventos para o ponto de extremidade do domínio da mesma forma que faria para um tópico personalizado. A única diferença é que você deve especificar o tópico para o qual deseja que o evento seja entregue. Por exemplo, publicar a seguinte matriz de eventos enviaria o evento com "id": "1111" para o tópico foo enquanto o evento com "id": "2222" seria enviado para o tópico bar.

Ao usar o esquema de eventos na nuvem, especifique o nome do tópico Grade de Eventos no domínio como um valor para a source propriedade. No exemplo a seguir, source a propriedade é definida como foo para o primeiro evento e para bar o segundo evento.

Se você quiser usar um campo diferente para especificar o tópico pretendido no domínio, especifique o mapeamento do esquema de entrada ao criar o domínio. Por exemplo, se você estiver usando a API REST, use a propriedade properties.inputSchemaMapping quando mapear esse campo para properties.topic. Se você estiver usando o SDK do .NET, use EventGridJsonInputSchemaMappingo . Outros SDKs também suportam o mapeamento de esquema.

[{
  "source": "foo",
  "id": "1111",
  "type": "maintenanceRequested",
  "subject": "myapp/vehicles/diggers",
  "time": "2018-10-30T21:03:07+00:00",
  "data": {
    "make": "Contoso",
    "model": "Small Digger"
  },
	"specversion": "1.0"
},
{
  "source": "bar",
  "id": "2222",
  "type": "maintenanceCompleted",
  "subject": "myapp/vehicles/tractors",
  "time": "2018-10-30T21:04:12+00:00",
  "data": {
    "make": "Contoso",
    "model": "Big Tractor"
  },
	"specversion": "1.0"
}]

Os domínios de eventos lidam com a publicação de tópicos para você. Em vez de publicar eventos para cada tópico que você gerencia individualmente, você pode publicar todos os seus eventos no ponto de extremidade do domínio. A Grade de Eventos garante que cada evento seja enviado para o tópico correto.

Preços

Os domínios de eventos usam o mesmo preço de operações que todos os outros recursos da Grade de Eventos usam. As operações funcionam da mesma forma em domínios de evento e em tópicos personalizados. Cada entrada de um evento em um domínio de evento é uma operação, e cada tentativa de entrega de um evento é uma operação.

Próximos passos

Para saber mais sobre como configurar domínios de eventos, criar tópicos, criar assinaturas de eventos e publicar eventos, consulte Gerenciar domínios de eventos.