【发布时间】:2021-01-06 01:55:33
【问题描述】:
我有一个像这样的假客户端,其端点连接到来自 PROJECT-SERVICE 的两个 API
@FeignClient(name = "PROJECT-SERVICE", fallbackFactory = ProjectServiceFallbackFactory.class)
public interface ProjectServiceClient {
@GetMapping("/api/projects/{projectKey}")
public ResponseEntity<Project> getProjectDetails(@PathVariable("projectKey") String projectKey);
@PostMapping("/api/projects")
public ResponseEntity<Project> createProject(@RequestBody Project project);
}
我正在使用这样的客户端:
@Service
public class MyService {
@Autowired
private ProjectServiceClient projectServiceClient;
public void doSomething() {
// Some code
ResponseEntity<Project> projectResponse = projectServiceClient.getProjectDetails(projectKey);
// Some more code
}
public void doSomethingElse() {
// Some code
ResponseEntity<Project> projectResponse = projectServiceClient.createProject(Project projectToBeCreated);
// Some more code
}
}
我的问题是,大多数时候(大约 60% 的时间),这些 Feign 调用中的任何一个都会导致 HystrixTimeoutException。
我最初以为下游微服务(本例中为 PROJECT-SERVICE)可能有问题,但事实并非如此。事实上,当getProjectDetails() 或createProject() 被调用时,PROJECT-SERVICE 实际上完成了这项工作并返回了一个ResponseEntity<Project>,其状态分别为200 和201,但我的后备是使用HystrixTimeoutException 激活的。
我徒劳地试图找出可能导致此问题的原因。
但是,我的主应用程序配置中有这个:
feign.hystrix.enabled=true
feign.client.config.default.connect-timeout=5000
feign.client.config.default.read-timeout=60000
谁能指出我的解决方案?
谢谢, 斯里拉姆斯里达兰
【问题讨论】:
标签: spring-boot microservices hystrix feign