我在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
非常感谢你们的帮助!
答案 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>