使用具有回退行为的Spring FaignClient

使用具有回退行为的Spring FaignClient,spring,microservices,netflix-feign,spring-cloud-feign,feign,Spring,Microservices,Netflix Feign,Spring Cloud Feign,Feign,我有一个问题要用Spring FaignClient解决 我有两个端点发送短信,两个端点的行为相同: 当我发送一个包含所有所需查询参数的GET时,服务将发送SMS 但我需要检查端点A是否关闭——在这种情况下,我必须发送到端点B,两者都具有相同的请求路径和负载 我怎样才能解决这个问题 今天,我有一个带有假客户端注释的界面,只有一个URL。 我试图使用一个假生成器在运行时创建请求并更改URL,但没有成功 如何在客户端使用Feign控制服务回退,例如: @Value(${sms.urls}) Li

我有一个问题要用Spring FaignClient解决

我有两个端点发送短信,两个端点的行为相同:

  • 当我发送一个包含所有所需查询参数的GET时,服务将发送SMS
  • 但我需要检查端点A是否关闭——在这种情况下,我必须发送到端点B,两者都具有相同的请求路径和负载
我怎样才能解决这个问题

今天,我有一个带有假客户端注释的界面,只有一个URL。
我试图使用一个假生成器在运行时创建请求并更改URL,但没有成功

如何在客户端使用Feign控制服务回退,例如:

@Value(${sms.urls})
List<String> endPoints;

for (endPoint : endPoints){
  if(endPoint.isUp())
  return makeRequest(endPoint).
}
@Value(${sms.url})
列出终点;
对于(端点:端点){
if(endPoint.isUp())
返回makeRequest(端点)。
}

关于使用FaignBuilder,也许您可以找到问题的答案 如果这不起作用,我建议围绕接口创建一个包装器类
过去,当我不得不处理这样一个问题时,我只是创建了一个使用伪客户机接口的类。Spring将根据您使用@FeignClient注释您的外部客户机这一事实为您处理连接。通过这种方式,您可以修改包装器类的行为。您可以在方法中编写回退逻辑,并根据需要调用外部客户端。
希望这能有所帮助

我找到了一个易于实现回退功能的链接:但现在当我尝试使用生成器调用Feign时:HystrixFeign.builder().contract(新的SpringMvcContract()).target(AtlasFeignClient.class,this.url);Faign无法解析spring配置中配置的application.property值,它们会发送一个请求,请求类似于未解析url的方法:get url://${some.property}感谢您的链接!我想知道,如果您尝试使用Spring(没有伪装,使用@Value(“config_name”))来检索配置,然后手动将它们注入到伪装的构建器中,也许它可以工作?只是一个建议。