我有一个这样的假客户机,它的endpoint指向来自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
}
}
我最初以为下游的微服务(本例中为PROJECT-SERVICE)可能出了问题,但事实并非如此。事实上,当调用GetProjectDetails()
或CreateProject()
时,PROJECT-SERVICE实际上执行了该作业,并返回状态分别为200
和201
的ResponseEntity
,但我的回退是用HystrixTimeoutException
激活的。
我在徒劳地寻找是什么引起了这个问题。
然而,我在我的主要应用程序配置中有以下内容:
feign.hystrix.enabled=true
feign.client.config.default.connect-timeout=5000
feign.client.config.default.read-timeout=60000
谢谢Sriram Sridharan
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
中
我需要多次调用服务(>50次)并聚合响应。因此,我决定使用,使用Async和CustomExecuter(它自己的线程池)来提高速度,而不是等待服务响应。 我在类路径上使用带有ApacheHTTP和Hystrix的feign客户机。我可以看到它有时是工作的,有时我得到例外,因为电路是开放的。
假客户端支持可选请求参数吗? 例如,我有一个endpoint,但我没有找到一种方法,可以使用feign client使param1成为可选的。
我对假装很陌生。今天就发现吧……当我读到Spring Cloud Feign时,我的第一个问题是:“您如何包装您的Fiign客户机?” 我举个例子。假设我们有2个微服务M1和M2。M2使用来自M1的endpoint。 null 也许我完全错了,请指正。 多谢!拜拜
我有一个带有spring后端的Vue.js应用程序,它通过一个虚假的客户端向一个“订单”微服务打电话。我有许多使用@PathVariable运行良好的GET请求,但我有一个GET请求,它可以传递任意数量的不同URL参数,并且定义了一个OrderListItemParameters类并将其添加到GET请求中,以便将这些参数传递给微服务。我可以看到请求正在发送到微服务,但它被拒绝,出现了“org.za
客户端的HTTP/HTTPS请求。 进程:主进程 ClientRequest是由EventEmitter来实现Writable Stream new ClientRequest(options) 作用:发起新的HTTP/HTTPS请求 options(Object | String) - options是String时即请求URL。 options 是Object时则按以下属性请求: meth
使用Spring云合同验证生产者和消费者之间的合同。在我的消费者控制器中,我正在使用Feign client调用另一个微服务方法来获取一些数据。但是现在在SpringCloud contract中,为这个微服务进行存根调用是不可能的。 使用Spring Cloud与Netflix OSS。