我正在开发一个Spring Boot应用程序。从我的应用程序中,我们正在调用一个外部RestService,并希望在RestCall由于任何原因失败时重试。
我知道@Retryable
应该在春季进行。我正在尝试使用参数实现类似以下的内容:
@Retryable(maxAttempts=3,value=RunTimeException.class,backoff = @Backoff(delay = 900000))
现在我的问题是,有多个客户端将调用此服务。当client1调用此服务时,我想在15分钟后发生故障时重试。当client2调用此服务时,我想在1秒后发生故障时重试。
所以我想知道是否有任何方法可以基于client1或client2配置可重试的延迟。
任何建议都是有帮助的。
答案 0 :(得分:0)
您可以使用ThreadLocal<Long>
@Bean
存储延迟,然后使用delayExpression="@threadLocalBean.get()
。
但是,将线程暂停15分钟会有点严重。
在这种情况下,最好使用调度程序进行重试。