我在一个我想重试的方法中使用以下注释:
@Retryable(maxAttempts = 5, backoff = @Backoff(delay = 1000))
private boolean myMethod() {
...
}
此重试按预期工作,以及未显示的指数延迟。在某些情况下,我想使用线性增量重试而不是指数增量(首先等待1秒,然后是2秒,3秒等)。听起来我需要delayExpresion
,但我不熟悉SpEL知道在这里使用什么。我试过了:
@Retryable(maxAttempts = 5, backoff = @Backoff(delay = 1000, delayExpression = "#{delay + 1000}"))
我可以通过SpEL尝试做什么(延迟增加1000)?或许,我对线性重试的方法是否正确?
答案 0 :(得分:1)
通过注释无法做到这一点。
Retryable
有一个interceptor()
选项:
/**
* Retry interceptor bean name to be applied for retryable method. Is mutually
* exclusive with other attributes.
* @return the retry interceptor bean name
*/
String interceptor() default "";
因此,您应该考虑通过RetryOperationsInterceptor
构建一个RetryInterceptorBuilder
bean,并为其注入一个具有所需线性逻辑的自定义BackOffPolicy
。