Os fluxos de eventos no EventBridge usam políticas de nova tentativa, políticas de tolerância a falhas e filas de mensagens mortas (DLQs) para lidar com falhas na entrega de eventos. Quando a entrega a um destino falha, o EventBridge tenta novamente com base na política configurada. Se todas as tentativas se esgotarem, a política de tolerância a falhas determina se o evento com falha será ignorado ou se o fluxo será bloqueado. Encaminhe eventos não entregues para uma DLQ para preservá-los para inspeção posterior.
O diagrama a seguir mostra como essas três políticas interagem:
Event delivery fails
|
v
Retry policy
(backoff or exponential decay)
|
All retries exhausted?
/ \
No Yes
| |
Retry Fault tolerance policy
again / \
Allowed Prohibited
| |
DLQ configured? Stream blocked,
/ \ task status -> Ready
Yes No
| |
Send to Discard
DLQ event
Políticas de nova tentativa
Uma política de nova tentativa controla como o EventBridge reenvia a entrega após uma falha. Cada fluxo de eventos oferece suporte a duas políticas de nova tentativa:
|
Política |
Máximo de tentativas |
Intervalo entre tentativas |
Duração máxima |
Padrão |
|
Nova tentativa com backoff |
3 |
Aleatório, 10--20 segundos entre as tentativas |
-- |
Sim |
|
Nova tentativa com decaimento exponencial |
176 |
Começa em 1 s, dobra até 512 s |
1 dia |
Não |
Nova tentativa com backoff
A nova tentativa com backoff é a política padrão. O EventBridge tenta reenviar um evento com falha até 3 vezes, com um intervalo aleatório de 10 a 20 segundos entre tentativas consecutivas. Use esta política quando você prevê falhas transitórias que se resolvem rapidamente.
Nova tentativa com decaimento exponencial
A nova tentativa com decaimento exponencial oferece uma janela de repetição mais longa para destinos que podem demorar mais para se recuperar. O EventBridge tenta reenviar um evento com falha até 176 vezes durante um período máximo de 1 dia. O intervalo dobra a cada tentativa, até atingir o teto de 512 segundos:
1 s, 2 s, 4 s, 8 s, 16 s, 32 s, 64 s, 128 s, 256 s, 512 s
Após o intervalo atingir 512 segundos, as 167 tentativas restantes continuam com intervalos de 512 segundos.
Erros não repetíveis
Se não for possível realizar novas tentativas devido a erros como configurações de recursos inválidas, o status da tarefa mudará para Start Failed, independentemente da política de nova tentativa ou de tolerância a falhas. O EventBridge não repete essas tentativas porque o problema subjacente exige intervenção manual.
Políticas de tolerância a falhas
Uma política de tolerância a falhas define como o EventBridge lida com um evento que ainda apresenta falha após o esgotamento de todas as novas tentativas. Cada fluxo de eventos oferece suporte a duas políticas de tolerância a falhas:
|
Política |
Comportamento após esgotamento das tentativas |
Efeito nos eventos subsequentes |
|
Tolerância a falhas permitida |
O evento é enviado para a DLQ (se configurada) ou descartado |
O processamento continua |
|
Tolerância a falhas proibida |
O status da tarefa muda para Ready |
Processamento bloqueado até que você resolva o problema |
Tolerância a falhas permitida
Quando a tolerância a falhas é permitida, as falhas de entrega não bloqueiam o processamento de eventos. Após o esgotamento de todas as novas tentativas, o EventBridge entrega o evento à DLQ ou o descarta e, em seguida, continua o processamento.
Escolha esta política quando a perda de eventos for aceitável ou quando você tiver uma DLQ configurada para capturar eventos com falha.
Tolerância a falhas proibida
Quando a tolerância a falhas é proibida, as falhas de entrega bloqueiam o processamento de eventos após o esgotamento de todas as novas tentativas. O status da tarefa muda para Ready e nenhum outro evento é processado até que você resolva o problema.
Opte por esta política quando cada evento precisar ser entregue e você preferir interromper o processamento a perder eventos.
Filas de mensagens mortas
Uma fila de mensagens mortas (DLQ) captura eventos cuja entrega falhou após o esgotamento de todas as novas tentativas. Ao ativar uma DLQ em uma tarefa, o EventBridge envia os dados brutos do evento para a DLQ em vez de descartá-los. O recurso de DLQ vem desativado por padrão.
Destinos de DLQ suportados
Os seguintes serviços são suportados como destinos de DLQ:
|
Serviço |
Descrição |
|
ApsaraMQ for RocketMQ |
Serviço de fila de mensagens |
|
Simple Message Queue (antigo MNS) |
Serviço leve de fila de mensagens |
|
ApsaraMQ for Kafka |
Serviço de fila de mensagens compatível com Kafka |
|
Barramento de eventos do EventBridge |
Encaminha eventos com falha para outro barramento de eventos para processamento adicional |
Quando ative uma DLQ
Ative uma DLQ quando você precisar:
Inspecionar e depurar eventos com falha de entrega
Reprocessar eventos com falha após corrigir a causa raiz
Manter um registro de todas as falhas de entrega para auditoria
Se você usar a política Fault tolerance allowed sem uma DLQ, os eventos com falha serão descartados permanentemente após o esgotamento das novas tentativas. Para evitar perda de dados, configure uma DLQ antes de ativar a tolerância a falhas.