1

我需要调用一个 url,并且调用可能会返回错误的 http 代码,例如 404、500 等。当我收到这些错误时,我想实现一个重试功能:每小时将进行一次新调用,最多十次。

我使用 async-http-client 库来执行我的 POST 调用异步。

你有什么主意吗?

在此先感谢您的帮助。

4

1 回答 1

2

值得考虑Spring Retry功能。

API 的构造与您想要重试的内容无关,并且关注重试策略、退避、限制重试次数

如果您使用的是 Java 7/8,另一种可能性是AsyncRetryExecutor。例如

ScheduledExecutorService scheduler = Executors.newSingleThreadScheduledExecutor();
RetryExecutor executor = new AsyncRetryExecutor(scheduler).
    retryOn(SocketException.class).
    withExponentialBackoff(500, 2).     //500ms times 2 after each retry
    withMaxDelay(10_000).               //10 seconds
    withUniformJitter().                //add between +/- 100 ms randomly
    withMaxRetries(20);
于 2014-03-05T10:39:34.690 回答