Spring boot 即使基础请求成功,伪客户端也会抛出HystrixTimeoutException

Spring boot 即使基础请求成功,伪客户端也会抛出HystrixTimeoutException,spring-boot,microservices,hystrix,feign,Spring Boot,Microservices,Hystrix,Feign,我有一个像这样的假客户端,它的端点指向PROJECT-SERVICE中的两个API @FeignClient(name = "PROJECT-SERVICE", fallbackFactory = ProjectServiceFallbackFactory.class) public interface ProjectServiceClient { @GetMapping("/api/projects/{projectKey}")

我有一个像这样的假客户端,它的端点指向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);
}
有人能告诉我一个解决办法吗

谢谢,
斯里拉姆·斯里德哈兰(Sriram Sridharan)

希斯特里克斯(Hystrix)的超时时间与外援的超时时间无关。Hystrix有一个默认的1秒执行超时。您需要将此超时配置为略长于Feign,以避免在所需超时之前抛出
HystrixTimeoutException
。像这样:

feign.client.config.default.connect-timeout=5000
feign.client.config.default.read-timeout=5000
hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds=6000

这样做将允许首先抛出由5秒后超时引起的
FeignException
,然后将其包装在
HystrixTimeoutException
中。Hystrix的超时与Feign的超时无关。Hystrix有一个默认的1秒执行超时。您需要将此超时配置为略长于Feign,以避免在所需超时之前抛出
HystrixTimeoutException
。像这样:

feign.client.config.default.connect-timeout=5000
feign.client.config.default.read-timeout=5000
hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds=6000
这样做将允许首先抛出由5秒后超时引起的
FeignException
,然后将其包装为
HystrixTimeoutException

feign.client.config.default.connect-timeout=5000
feign.client.config.default.read-timeout=5000
hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds=6000