使用Spring FeignClient进行回退行为

时间:2017-11-13 16:29:27

标签: spring microservices netflix-feign spring-cloud-feign feign

我遇到了使用Spring FeignClient解决的问题。

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

  • 当我发送带有所需查询参数的GET时,服务会发送短信。
  • 但我需要检查端点A是否关闭 - 在这种情况下,我必须发送到端点B,两者都具有相同的请求路径和有效负载。

我该如何解决这个问题?

今天我有一个FeignClient注释界面,只有一个URL 我尝试使用FeignBuilder在运行时创建请求并更改URL但没有成功。

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

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

for (endPoint : endPoints){
  if(endPoint.isUp())
  return makeRequest(endPoint).
}

1 个答案:

答案 0 :(得分:1)

关于使用FeignBuilder,也许您可​​以找到问题的答案here

如果这不起作用,我建议在界面周围创建一个包装类。
当我不得不在过去处理这样的问题时,我只是创建了一个使用Feign客户端界面的类。 Spring将根据您使用@FeignClient注释注释您的假装客户端的事实来处理您的布线。这样您就可以修改包装类的行为。您可以在方法中编写回退逻辑,并根据需要调用假装客户端。

希望这有帮助