Como Criar APIs Orientadas a Eventos com Webhooks e Filas de Mensagens?

Ashley Innocent

Ashley Innocent

13 março 2026

Como Criar APIs Orientadas a Eventos com Webhooks e Filas de Mensagens?

Em poucas palavras

APIs orientadas a eventos utilizam webhooks para notificações externas e filas de mensagens para processamento interno. Publique eventos em uma fila (RabbitMQ, Kafka), processe assincronamente e notifique os clientes via webhooks. A Modern PetstoreAPI utiliza este padrão para processamento de pedidos, atualizações de estoque e notificações de pagamento.

Introdução

Um cliente faz um pedido. Sua API precisa cobrar o pagamento, atualizar o estoque, enviar um e-mail, notificar o depósito e disparar webhooks. Você faz tudo isso de forma síncrona, fazendo o cliente esperar 10 segundos? Ou responde imediatamente e processa assincronamente?

APIs orientadas a eventos respondem rapidamente e processam em segundo plano. O endpoint de pedido retorna 201 Created imediatamente. Eventos disparam o processamento em segundo plano. Webhooks notificam os clientes quando concluído.

A Modern PetstoreAPI utiliza arquitetura orientada a eventos para pedidos, pagamentos e estoque.

Apidog ajuda você a testar webhooks, validar fluxos de eventos e simular processamento assíncrono.

botão

Arquitetura Orientada a Eventos

APIs orientadas a eventos publicam eventos quando algo acontece. Outros serviços assinam e reagem.

Componentes

  1. Produtor de Eventos - Endpoint da API que publica eventos
  2. Barramento/Fila de Eventos - Roteia eventos (RabbitMQ, Kafka, SQS)
  3. Consumidor de Eventos - Workers em segundo plano que processam eventos
  4. Webhooks - Notificam clientes externos

Fluxo

Client → POST /orders → API
API → Publish "order.created" → Queue
API → Return 201 Created → Client
Worker → Consume event → Process order
Worker → Publish "order.completed" → Queue
Webhook Worker → Send webhook → Client

Webhooks para Eventos Externos

Webhooks notificam clientes externos sobre eventos.

// Publica evento quando o pedido é criado
app.post('/v1/orders', async (req, res) => {
  const order = await createOrder(req.body);

  await eventBus.publish('order.created', {
    orderId: order.id,
    userId: order.userId,
    total: order.total
  });

  res.status(201).json(order);
});

// Worker em segundo plano envia webhooks
eventBus.subscribe('order.completed', async (event) => {
  const webhooks = await getWebhooks(event.userId, 'order.completed');

  for (const webhook of webhooks) {
    await sendWebhook(webhook.url, {
      event: 'order.completed',
      data: event
    });
  }
});

Filas de Mensagens para Eventos Internos

Filas de mensagens lidam com o processamento interno de eventos.

Exemplo de RabbitMQ

// Publicador
await publishEvent('order.created', { orderId: '019b4132' });

// Consumidor
await consumeEvents('order.*', async (event) => {
  await processOrder(event);
});

Como a Modern PetstoreAPI Implementa APIs Orientadas a Eventos

Processamento de Pedidos

  1. POST /orders retorna 201 imediatamente
  2. Publica o evento order.created
  3. Worker de pagamento processa o pagamento
  4. Worker de estoque atualiza o estoque
  5. Worker de e-mail envia a confirmação
  6. Worker de webhook notifica o cliente

Veja a arquitetura de eventos da Modern PetstoreAPI.

Testando com Apidog

Apidog suporta testes de API orientadas a eventos:

Conclusão

APIs orientadas a eventos melhoram o desempenho e a escalabilidade. Use webhooks para notificações externas e filas de mensagens para processamento interno. A Modern PetstoreAPI demonstra padrões orientados a eventos prontos para produção.

Perguntas Frequentes

Qual a diferença entre webhooks e filas de mensagens?

Webhooks notificam clientes externos via HTTP. Filas de mensagens lidam com a comunicação interna entre serviços.

Qual fila de mensagens devo usar?

RabbitMQ para simplicidade, Kafka para alto throughput, AWS SQS para serviço gerenciado.

Como você lida com falhas de webhook?

Implemente lógica de retentativa com backoff exponencial (consulte nosso guia de confiabilidade de webhooks).

É possível usar eventos sem filas de mensagens?

Sim, mas as filas fornecem durabilidade, retentativa e desacoplamento.

Como você testa APIs orientadas a eventos?

Use Apidog para testar webhooks e validar fluxos de eventos.

Pratique o design de API no Apidog

Descubra uma forma mais fácil de construir e usar APIs