Descrição do projeto
TraduzidoA confiabilidade é fundamental aqui, então estou mais preocupado com falhas de assinantes. Cada tentativa de entrega deve ser assinada para que o destinatário possa verificar que veio de nós, carregar um timestamp e um ID de entrega único para proteger contra duplicatas, e em caso de erro, tentar novamente com backoff exponencial e jitter até um limite configurável, depois passar para o estado de carta morta. Precisamos de limites de concorrência por endpoint para que um assinante sobrecarregado não consuma recursos do restante, e chaves de idempotência para que uma nova tentativa nunca cause uma duplicata do lado do destinatário. Para deixar claro o escopo: isso não é uma fila de mensagens geral para tarefas internas e não é um gateway de API que proxy o tráfego de entrada. Trata-se de entregar webhooks de saída de forma confiável para terceiros, e a fila é apenas um mecanismo interno, não o resultado.
Também preciso de observabilidade e gerenciamento que posso passar para suporte e parceiros. Cada tentativa deve ser registrada em um log de entrega com solicitação, código de resposta, latência e contagem de tentativas, pesquisável por evento, endpoint e status. Deve haver uma maneira de tentar manualmente novamente entregas falhadas ou de carta morta, pausar um endpoint e retomá-lo, e rotacionar segredos de assinatura sem tempo de inatividade. Por favor, trate isso como infraestrutura de produção — com documentação clara e testes, não um protótipo.
— Endpoint para receber eventos de entrada com validação e persistência
— Modelo de assinatura: correspondendo tipos de eventos aos endpoints dos assinantes
— Payloads assinados com timestamp, ID de entrega e proteção contra duplicatas
— Tentativas com backoff exponencial, jitter e estado de carta morta
— Limites de concorrência por endpoint e tratamento de idempotência
— Log de entrega com pesquisa, tentativa manual e pausa de endpoint
— Rotação de segredos, documentação e autotestes