使用Spring Retry,我在1个线程中进行了重试。
在某些情况下,我希望能够在达到配置的重试次数之前取消重试。
使用此库实现此目标的最佳方法是什么?
我尝试将传入execute
的lambda封装起来,这样我就可以检查是否应该像这样取消重试:
public <V, E extends Throwable> V execute(ThrowingSupplier<V, E> action) throws E {
return retryTemplate.execute(context -> {
if (shouldCancel()) {
//Do something to cancel the retry here
} else {
return action.get()
}
});
}
然而,我觉得我用这种方式 Package 重试模板是在反对框架,而不是在使用框架。
1条答案
按热度按时间lnvxswe21#
只需致电:
然而,似乎
RetryTemplate
本身不能被外部中断,所以如果你需要在它处于睡眠状态时中断,你必须在它正在等待的线程上调用Thread.interrupt()
。如果使用线程池,这可能有点棘手...