使用@Retryable 方法时如何访问当前的重试尝试

Sau*_*nde 3 spring-retry spring-boot

我正在使用基于注释的方法 -@Retryable在 Spring Boot 应用程序中重试。

@Retryable(value = {DataAccessException.class, JpaSystemException.class}, maxAttempts = Integer.MAX_VALUE, backoff = @Backoff(delay = 30000))
Run Code Online (Sandbox Code Playgroud)

我想要做的是,每次重试时,我都想访问其当前的重试尝试。

我尝试使用 Java 反射来执行此操作 -

Retryable retryable = mth.getAnnotation(Retryable.class);
Run Code Online (Sandbox Code Playgroud)

但是使用这个我没有得到当前的重试尝试。它只是提供添加到@Retryable属性中的详细信息,例如value, maxAttempts, Backoffdetails

对此有什么想法吗?非常感谢帮助。

Gar*_*ell 7

您不能访问模板,除非你线了自己的拦截器,并将其提供给@Retryableinterceptor财产。

但是,您可以@Retryable使用方法访问计数

int retry = RetrySynchronizationManager.getContext().getRetryCount();
Run Code Online (Sandbox Code Playgroud)