本文介绍了Springboot @retryable不重试的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
以下代码未重试.我想念什么?
The following code is not retrying. What am I missing?
@EnableRetry
@SpringBootApplication
public class App implements CommandLineRunner
{
.........
.........
@Retryable()
ResponseEntity<String> authenticate(RestTemplate restTemplate, HttpEntity<MultiValueMap<String, String>> entity) throws Exception
{
System.out.println("try!");
throw new Exception();
//return restTemplate.exchange(auth_endpoint, HttpMethod.POST, entity, String.class);
}
我已将以下内容添加到pom.xml中.
I have added the following to the pom.xml.
<dependency>
<groupId>org.springframework.retry</groupId>
<artifactId>spring-retry</artifactId>
<version>1.1.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
我还尝试为@Retryable提供不同的参数组合.
I also tried providing different combinations of arguments to @Retryable.
@Retryable(maxAttempts=10,value=Exception.class,backoff=@Backoff(delay = 2000,multiplier=2))
谢谢.
推荐答案
在Spring Boot 2.0.2发行版中,我观察到@Retryable在同一个类中具有可重试和调用的方法时不起作用.在调试时发现切入点没有正确构建.现在,解决此问题的方法是,我们需要在不同的类中编写该方法并调用它.
In spring boot 2.0.2 Release, I have observed that the @Retryable is not working if you have retryable and called method in same class. On debugging found that the pointcut is not getting built properly. For now, the workaround for this problem is that we need to write the method in a different class and call it.
可以在此处找到工作示例
这篇关于Springboot @retryable不重试的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!