0Pricing
Azure Fundamentals · Aula

Event Grid e Arquitetura Orientada a Eventos

Encaminhe eventos de serviços do Azure e de publicadores personalizados usando o Event Grid, distribua-os entre vários assinantes e compare o Event Grid com o Event Hubs e o Service Bus.

Event Grid e Arquitetura Orientada a Eventos é uma aula grátis de Azure Fundamentals no CoddyKit. Esta é a aula 4 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Azure Fundamentals, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Azure Fundamentals inclui 4 aulas no total.

O que é uma arquitetura orientada por eventos

Numa arquitetura orientada por eventos, os componentes comunicam publicando e subscrevendo eventos, em vez de se chamarem diretamente. Um componente (produtor) emite um evento quando acontece algo relevante — um ficheiro é carregado, uma encomenda é efetuada ou um dispositivo envia uma leitura. Outros componentes (subscritores) reagem aos eventos que lhes interessam, de forma independente e assíncrona. Isto desacopla os produtores dos consumidores, melhorando a escalabilidade, a resiliência e a capacidade de manutenção.

O que é o Azure Event Grid

Azure Event Grid é um serviço de encaminhamento de eventos totalmente gerido que entrega eventos de origens (publicadores) a processadores (subscritores) através de um modelo de envio. Event Grid foi concebido para eventos reativos e discretos — algo mudou e precisa de reagir imediatamente. Garante uma entrega de pelo menos uma vez com novas tentativas automáticas, suporta filtragem para que os subscritores recebam apenas eventos relevantes e pode encaminhar eventos para Azure Functions, Logic Apps, webhooks, Event Hubs e filas do Service Bus.

Tópicos do Event Grid e subscrições de eventos

Os publicadores enviam eventos para um tópico do Event Grid. Os subscritores criam subscrições de eventos num tópico, especificando um ponto final e regras de filtragem opcionais. Um único tópico pode ter várias subscrições — cada subscrição recebe uma cópia independente dos eventos correspondentes. Serviços do Azure, como Blob Storage, Resource Manager, Service Bus e Azure Container Registry, são origens de eventos incorporadas com tópicos do sistema que não exigem configuração adicional.

# Create a custom Event Grid topic
az eventgrid topic create \
  --name MyEventTopic \
  --resource-group MyRG \
  --location eastus

# Create a subscription routing to an Azure Function
az eventgrid event-subscription create \
  --name myFunctionSub \
  --source-resource-id '/subscriptions/.../providers/Microsoft.EventGrid/topics/MyEventTopic' \
  --endpoint '/subscriptions/.../providers/Microsoft.Web/sites/myFunctionApp/functions/EventHandler'

Esquema de eventos

Os eventos publicados no Event Grid seguem um esquema JSON padrão com campos obrigatórios: id (identificador exclusivo), eventType (por exemplo, Microsoft.Storage.BlobCreated), subject (caminho para o recurso do evento), eventTime (carimbo de data/hora ISO 8601), dataVersion e data (dados específicos do evento). Event Grid também suporta o esquema CloudEvents (padrão da CNCF) para interoperabilidade com outras plataformas de eventos.

// Event Grid event payload (Event Grid schema)
[
  {
    'id': 'b781910b-3000-4f19-a4c2-b6b9c4ca7a12',
    'eventType': 'Microsoft.Storage.BlobCreated',
    'subject': '/blobServices/default/containers/uploads/blobs/photo.jpg',
    'eventTime': '2025-01-15T12:30:00.000Z',
    'data': {
      'api': 'PutBlockList',
      'url': 'https://mystorageacct.blob.core.windows.net/uploads/photo.jpg',
      'contentType': 'image/jpeg',
      'contentLength': 524288
    },
    'dataVersion': '',
    'metadataVersion': '1'
  }
]

Filtragem de eventos

As subscrições de eventos suportam filtragem para reduzir o ruído no lado do subscritor. Pode filtrar por tipo de evento (receber apenas BlobCreated, e não BlobDeleted), por prefixo ou sufixo do assunto (apenas blobs num contentor específico) ou por filtros avançados em qualquer campo dos dados do evento, utilizando operadores como StringContains, NumberGreaterThan e BoolEquals. A filtragem ocorre no servidor, pelo que os subscritores recebem apenas eventos que correspondem aos seus critérios.

# Subscribe to BlobCreated events for .jpg files only
az eventgrid event-subscription create \
  --name jpgImageSub \
  --source-resource-id '/subscriptions/.../storageAccounts/mystorageaccount' \
  --endpoint 'https://myfunction.azurewebsites.net/api/ProcessImage' \
  --included-event-types 'Microsoft.Storage.BlobCreated' \
  --subject-ends-with '.jpg'

Event Grid vs Event Hubs vs Service Bus

Três serviços do Azure processam eventos e mensagens — escolha com base no seu cenário. Event Grid destina-se ao encaminhamento reativo de eventos (baixo volume, discretos e reativos — por exemplo, uma notificação de alteração de recurso). Event Hubs destina-se à transmissão de eventos de alto débito (milhões de eventos por segundo, telemetria e pipelines de big data). Service Bus destina-se a mensagens empresariais com ordenação, desduplicação, mensagens não entregues e transações (processamento de encomendas e transações financeiras).

// Decision guide:
// Event Grid  — 'Something happened, react to it'
//               Azure resource events, webhooks, low-latency fan-out
//               Price: per event (cheap for low volume)

// Event Hubs  — 'Capture a firehose of streaming data'
//               IoT telemetry, log aggregation, real-time analytics
//               Price: per throughput unit + capture

// Service Bus — 'Reliable message delivery between services'
//               Order processing, workflow steps, dead-letter queues
//               Price: per operation + messaging units

Publicar eventos personalizados

Publique eventos personalizados num tópico do Event Grid utilizando um pedido HTTP POST simples com a chave de acesso do tópico. Qualquer serviço ou aplicação capaz de efetuar pedidos HTTP pode publicar eventos. Isto torna simples emitir eventos a partir de aplicações locais, serviços de terceiros ou serviços do Azure que não tenham suporte nativo para Event Grid. Agrupe até 1 MB de eventos por POST para obter maior eficiência.

# Get the topic endpoint and key
TOPIC_ENDPOINT=$(az eventgrid topic show --name MyEventTopic --resource-group MyRG --query endpoint -o tsv)
TOPIC_KEY=$(az eventgrid topic key list --name MyEventTopic --resource-group MyRG --query key1 -o tsv)

# Publish a custom event
curl -X POST $TOPIC_ENDPOINT \
  -H 'Content-Type: application/json' \
  -H "aeg-sas-key: $TOPIC_KEY" \
  -d '[{
    "id": "event-001",
    "eventType": "Contoso.OrderPlaced",
    "subject": "/orders/ORD-12345",
    "eventTime": "2025-01-15T12:00:00Z",
    "data": { "orderId": "ORD-12345", "total": 99.99 },
    "dataVersion": "1.0"
  }]'

Políticas de mensagens não entregues e novas tentativas

Se uma tentativa de entrega de um evento falhar (o subscritor devolver um HTTP não 2xx), o Event Grid tenta novamente utilizando um recuo exponencial com variação aleatória durante até 24 horas (configurável até 72 horas), com um máximo de 30 tentativas. Depois de esgotar as tentativas, o Event Grid pode enviar para mensagens não entregues os eventos que não foram entregues para um contentor do Azure Blob Storage, para investigação manual. Configure o envio para mensagens não entregues quando a entrega fiável de eventos for crítica e precisar de auditar ou processar novamente eventos que falharam.

# Configure dead-letter storage and retry for a subscription
az eventgrid event-subscription update \
  --name myFunctionSub \
  --source-resource-id '/subscriptions/.../topics/MyEventTopic' \
  --deadletter-endpoint '/subscriptions/.../storageAccounts/mystg/blobServices/default/containers/deadletter' \
  --max-delivery-attempts 30 \
  --event-ttl 1440  # 24 hours in minutes

Descrição geral do Azure Event Hubs

Azure Event Hubs é uma plataforma distribuída de transmissão de dados capaz de receber e processar milhões de eventos por segundo. Utiliza um modelo de consumidores particionado — os eventos são distribuídos por partições e cada grupo de consumidores lê eventos de forma independente, ao seu próprio ritmo. Isto permite que vários consumidores processem o mesmo fluxo sem coordenação. Entre os casos de utilização comuns estão a ingestão de telemetria de IoT, a agregação de registos de aplicações, a análise de fluxos de cliques e os pipelines de dados para painéis em tempo real.

# Create an Event Hubs namespace and hub
az eventhubs namespace create \
  --name myEventHubNS \
  --resource-group MyRG \
  --location eastus \
  --sku Standard

az eventhubs eventhub create \
  --name telemetry \
  --namespace-name myEventHubNS \
  --resource-group MyRG \
  --partition-count 8 \
  --message-retention 3  # Days to retain events

Azure Service Bus para mensagens fiáveis

Azure Service Bus é um intermediário de mensagens empresariais que fornece filas (ponto a ponto) e tópicos com subscrições (publicação e subscrição). Ao contrário do Event Grid (envio sem confirmação) e do Event Hubs (transmissão), o Service Bus garante entrega ordenada (filas FIFO), deteção de duplicados, filas de mensagens não entregues para falhas de processamento, sessões de mensagens para processamento agrupado e transações — tudo essencial para fluxos de processamento financeiro e de encomendas.

# Create a Service Bus namespace and queue
az servicebus namespace create \
  --name myServiceBusNS \
  --resource-group MyRG \
  --location eastus \
  --sku Standard

az servicebus queue create \
  --name order-processing \
  --namespace-name myServiceBusNS \
  --resource-group MyRG \
  --enable-dead-lettering-on-message-expiration true \
  --max-delivery-count 10  # Move to dead-letter after 10 failed attempts

Padrão prático orientado por eventos: processamento de ficheiros

Um padrão comum orientado por eventos no Azure: um utilizador carrega um ficheiro para o Blob Storage, que dispara um evento BlobCreated para o Event Grid. O Event Grid encaminha o evento para uma Azure Function que processa o ficheiro (redimensiona uma imagem, extrai texto ou valida dados) e escreve o resultado no Azure SQL Database. Se o processamento falhar, o evento é enviado para mensagens não entregues num contentor de armazenamento. Este pipeline completo não requer sondagens nem computação persistente quando está inativo.

// Azure Function: process image on BlobCreated event
module.exports = async function (context, eventGridEvent) {
  const blobUrl = eventGridEvent.data.url;
  const blobName = eventGridEvent.subject.split('/blobs/').pop();

  context.log('Processing image:', blobName);

  // Process via Cognitive Services Vision API
  const tags = await analyzeImage(blobUrl);

  // Write metadata to Cosmos DB via output binding
  context.bindings.cosmosOutput = {
    id: blobName,
    tags,
    processedAt: new Date().toISOString()
  };

  context.log('Processing complete for:', blobName);
};

Verificação rápida

Teste a sua compreensão dos conceitos do Microsoft Azure Fundamentals (AZ-900) abordados nesta lição.

Recapitulação da lição

Nesta lição, aprendeu que o Azure Event Grid encaminha eventos discretos de publicadores para subscritores através de entrega por envio, com filtragem e mensagens não entregues; conheceu a principal diferença entre Event Grid (eventos reativos), Event Hubs (transmissão) e Service Bus (mensagens empresariais fiáveis); e aprendeu a criar pipelines orientados por eventos encadeando eventos do Blob Storage através do Event Grid para Azure Functions. A seguir, vamos explorar os serviços do Azure DevOps.

Perguntas Frequentes

A aula “Event Grid e Arquitetura Orientada a Eventos” é grátis?

Sim — o texto completo de “Event Grid e Arquitetura Orientada a Eventos” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Azure Fundamentals, atualize para CoddyKit PRO. O curso de Azure Fundamentals inclui 4 aulas no total.

O que vou aprender em “Event Grid e Arquitetura Orientada a Eventos”?

Encaminhe eventos de serviços do Azure e de publicadores personalizados usando o Event Grid, distribua-os entre vários assinantes e compare o Event Grid com o Event Hubs e o Service Bus. Você pratica Azure Fundamentals com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar Azure Fundamentals?

Nenhuma experiência prévia é necessária. Azure Fundamentals no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 4 de 4.

Quanto tempo leva a aula “Event Grid e Arquitetura Orientada a Eventos”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de Azure Fundamentals?

Sim. Cada aula de Azure Fundamentals inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Gatilhos e Associações do Azure Functions
  2. Durable Functions para Fluxos de Trabalho com Estado
  3. Azure Logic Apps
  4. Event Grid e Arquitetura Orientada a Eventos
← Voltar para Azure Fundamentals