功能区MaxAutoRetries属性不起作用

时间:2018-11-01 04:49:35

标签: spring-boot spring-cloud resttemplate netflix-ribbon

我在application.properties文件中设置了几个重试配置。但是,当我运行功能区应用程序时,它们都不起作用。

//this is my service
@RestController
@SpringBootApplication
public class HelloApplication {
    @Value("${server.port}")
    private int port;

    public static void main(String[] args) {
        SpringApplication.run(HelloApplication .class, args);
    }
    @GetMapping(value="/app")
    public String notification() {
        return "This Is HelloService running on port:"+ port;
    }
}

这是我的RibbonAppApplication班:

@SpringBootApplication(scanBasePackages={"com.netflix.client.config.IClientConfig"})
@RestController
@RibbonClient(name= "hello", configuration=RibbonConfig.class )
public class RibbonAppApplication {
    @Autowired
    private RestTemplate restTemplate;
    public static void main(String[] args) {
        SpringApplication.run(RibbonAppApplication.class, args);
    }
    @GetMapping
    public String getService() {
        return restTemplate.getForObject("http://hello/app",String.class);
    }

    @Bean
    @LoadBalanced
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }
}

这是application.properties的{​​{1}}:

RibbonAppApplication

非常感谢你们的帮助!

2 个答案:

答案 0 :(得分:0)

缺少Sprint重试的依赖性几乎始终是Ribbon无法重试的原因。 Spring重试Zuul / Ribbon的重试功能依赖项。

  

当请求失败时,您可能希望自动重试该请求。为此,在使用Sping Cloud Netflix时,您需要在应用程序的类路径中包括Spring Retry。当出现Spring Retry时,负载平衡的RestTemplates,Feign和Zuul会自动重试任何失败的请求(假设您的配置允许这样做)

在pom.xml中添加Spring Retry应该可以解决此问题。

相关文档:https://cloud.spring.io/spring-cloud-netflix/multi/multi_retrying-failed-requests.html

答案 1 :(得分:0)

您必须将spring-retry依赖项添加到pom.xml文件中:

<!-- https://mvnrepository.com/artifact/org.springframework.retry/spring-retry -->
<dependency>
    <groupId>org.springframework.retry</groupId>
    <artifactId>spring-retry</artifactId>
    <version>1.2.4.RELEASE</version>
</dependency>