FwRetry
Politica de retry com backoff exponencial. Util pra chamadas HTTP que podem falhar transitoriamente.
Assinatura: FwRetry():maxAttempts(3):backoff(1000):execute({|| ...})
Retorna: Any (resultado da funcao)
FwRetry implementa retry inteligente — em vez de loop manual com sleep, declare politica.
Try {
Local oResult := FwRetry():New() ;
:maxAttempts(3) ;
:backoff(1000) ; // 1s, 2s, 4s exponencial
:execute({|| U_ChamaAPIExterna()})
} catch FwRetryExhaustedError as e {
FwLogger():Error("Falhou apos retries")
}
Configuracoes
- maxAttempts: numero maximo de tentativas
- backoff: ms base entre tentativas
- multiplier: fator de crescimento (default 2 = exponencial)
- maxBackoff: teto entre tentativas
- retryOn: tipos de erro que reativam retry
Pegadinhas
- Idempotencia: retry pode duplicar acao se nao for idempotente. Cuidado em POST de pagamento.
- Sem maxAttempts pode loop infinito.