gpt4 book ai didi

java - Spring Retry 中的增量线性退避

转载 作者:行者123 更新时间:2023-11-30 06:22:01 27 4
gpt4 key购买 nike

我在我想重试的方法中使用以下注释:

@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}"))

我想要做的事情(延迟增加 1000)可以通过 SpEL 实现吗?或者,我的线性重试方法是否正确?

最佳答案

这是不可能通过注释实现的。

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 "";

因此,您应该考虑通过 RetryInterceptorBuilder 构建一个 RetryOperationsInterceptor bean,并在其中注入(inject)具有所需线性逻辑的自定义 BackOffPolicy

关于java - Spring Retry 中的增量线性退避,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47932695/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com