Domínios de eventos no Azure Event Grid

Um domínio de eventos no Azure Event Grid fornece um único endpoint de publicação para milhares de tópicos individuais relacionados com a mesma aplicação. Pode pensar num domínio de eventos como um meta-tópico que contém muitos tópicos individuais. Ao publicar um evento, o editor deve especificar o tema-alvo no domínio do evento para o qual pretende publicar. O publicador pode enviar uma matriz ou um lote de eventos, cujos eventos são enviados para diferentes tópicos no domínio de eventos. Para mais detalhes, consulte Publicar num domínio de evento.

Os domínios de eventos também lhe dão controlo da autenticação e da autorização para cada tópico, para que possa segmentar os 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 orientadas a 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.

Exemplo de caso de uso no domínio de eventos

Os domínios de eventos são mais facilmente explicados usando um exemplo. Digamos que gere a Contoso Construction Machinery, que 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 seus clientes configuraram.

Os domínios de evento permitem modelar a Contoso Construction Machinery como uma única entidade de Grade de Eventos. 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.

Também lhe dá um único ponto terminal, para o qual pode enviar todos os eventos dos seus clientes. A Grade de Eventos se encarregará de garantir que cada tópico esteja ciente apenas dos eventos com escopo para seu locatário.

Imagem que mostra um exemplo de um caso de utilização de domínios do Event Grid.

Gestão de acessos para domínios de eventos

Os domínios de eventos fornecem controlo detalhado de autorização e autenticação sobre cada tópico através do controlo de acesso baseado em funções do Azure (Azure RBAC). Use os papéis RBAC do Azure para restringir cada inquilino na sua aplicação apenas aos tópicos aos quais pretende conceder-lhes acesso. O Azure RBAC em domínios de eventos funciona da mesma forma que o controlo de acesso gerido no restante do Event Grid 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 predefinidas para domínios de eventos

O Event Grid tem duas definições de funções incorporadas que facilitam o trabalho do Azure RBAC com domínios de eventos:

  • Contribuinte de Subscrição de Eventos do EventGrid
  • Leitor de subscrição EventGrid

Atribua estes papéis a utilizadores que precisam de subscrever tópicos no teu domínio de eventos. Limite cada atribuição de funções apenas ao tópico que o utilizador precisa de subscrever. Para obter informações sobre essas funções, consulte Funções internas para grade de eventos.

Subscreva tópicos num domínio de eventos

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

Um tópico de domínio é um recurso gerido automaticamente no Event Grid. Pode criar uma subscrição de evento no âmbito do domínio sem criar primeiro o tema do domínio. Nesse caso, o Event Grid cria automaticamente o tópico do domínio em seu nome. Também pode optar por criar manualmente o tema do domínio. Este comportamento reduz o número de recursos que tem de gerir ao trabalhar com um grande número de temas de domínio. Quando a última subscrição de um tema de domínio é eliminada, o tópico de domínio também é eliminado, independentemente de o tema de domínio ter sido criado manualmente ou auto-criado.

Subscrições ao nível do domínio

Os domínios de eventos também suportam subscrições de âmbito de domínio. Uma subscrição de evento no âmbito do domínio de eventos recebe todos os eventos enviados para o domínio de eventos, independentemente do tópico para o qual os eventos são enviados. As subscrições de âmbito do domínio são úteis em cenários de gestão e auditoria.

Publicar num domínio de eventos

Quando cria um domínio de eventos, o Event Grid fornece um endpoint de publicação semelhante ao de um tópico personalizado. Para publicar eventos sobre qualquer tópico num domínio de eventos, empurre os eventos para o endpoint do domínio de eventos da mesma forma que farias para um tópico personalizado. A única diferença é que deve especificar o tema sobre o qual o evento deve ser apresentado. Por exemplo, publicar o seguinte conjunto de eventos envia o evento com "id": "1111" para o tema foo e o evento com "id": "2222" para o tema bar.

Nota

Os domínios de eventos não suportam cenários de broadcast em que um evento é enviado para um domínio de eventos e cada tópico no domínio recebe uma cópia do evento. Ao publicar eventos, o editor deve especificar o tema-alvo no domínio do evento para o qual pretende publicar. Para publicar a mesma carga útil de evento em múltiplos tópicos no domínio de eventos, o publicador tem de duplicar a carga útil do evento, alterar o nome do tópico em cada cópia e publicá-las no Event Grid utilizando o ponto final do domínio de eventos, individualmente ou em lote.

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

Para usar um campo diferente para especificar o tópico-alvo no domínio de eventos, configure o mapeamento do esquema de entrada ao criar o domínio de eventos. Para a API REST, use a propriedade properties.inputSchemaMapping para mapear esse campo para properties.topic. Para o SDK .NET, use EventGridJsonInputSchemaMapping. Outros SDKs também suportam mapeamento de esquemas.

[{
  "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 tema individualmente, publica todos os eventos no endpoint do domínio de eventos, e a Grade de Eventos encaminha cada evento para o tópico correto.

Preços do domínio de eventos

Os domínios de eventos utilizam os mesmos preços das operações que outras funcionalidades no Event Grid. As operações funcionam da mesma forma em domínios de eventos que em tópicos personalizados:

  • Cada entrada de um evento num domínio de eventos é uma operação.
  • Cada tentativa de entrega de um evento é uma operação.

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.