Tema: queues
-
Use leases com expiração em jobs distribuídos
Proteja um job reassumido contra um worker anterior atrasado, combinando verificações de propriedade com um fencing token monotonicamente crescente.
-
Encaminhar jobs problemáticos (poison) para uma dead-letter queue
Separe os jobs que falham de forma permanente das tentativas repetidas por falhas transitórias, preserve diagnósticos seguros e trate o replay como uma operação explícita e controlada.
-
SLIs para filas e jobs em lote: idade da mensagem mais antiga, atualidade, cobertura e último sucesso
Serviços orientados a requisições medem disponibilidade e latência; filas e jobs em lote exigem outros indicadores: a idade do item não processado mais antigo, a proporção de dados mais recentes que um limite, a proporção de execuções agendadas concluídas dentro da janela e o momento do último sucesso. Esta metodologia os deriva dos SLIs de pipeline do SRE workbook.
-
Tornar inofensiva a entrega duplicada
Faça commit do marcador de deduplicação e do efeito pretendido no banco de dados na mesma transação, tratando os efeitos externos como um problema de consistência à parte.
-
Envio confiável de e-mail transacional: linha de outbox, worker, novas tentativas e chaves de idempotência
Não envie e-mail dentro do handler da requisição: registre a mensagem na mesma transação do evento de negócio, deixe um worker entregá-la, faça novas tentativas com backoff diante de respostas transitórias (4yz) e falhas de conexão, pare nas respostas permanentes (5yz) e evite duplicatas após uma falha com uma chave de idempotência por evento e um Message-ID estável.
Legível por máquina: JSON