Microservices 当rest调用因使用外部客户端而失败时,未调用回退方法

Microservices 当rest调用因使用外部客户端而失败时,未调用回退方法,microservices,netflix-eureka,netflix-feign,spring-cloud-feign,feign,Microservices,Netflix Eureka,Netflix Feign,Spring Cloud Feign,Feign,我试图通过使用假客户端实现回退,但没有成功。这是一个最简单的代码,请在下面找到 主类 @SpringBootApplication @EnableDiscoveryClient @RestController @EnableFeignClients public class EurekaClient1Application { @Autowired public DiscoveryClient discoveryClient; public static void m

我试图通过使用假客户端实现回退,但没有成功。这是一个最简单的代码,请在下面找到

主类

@SpringBootApplication
@EnableDiscoveryClient
@RestController
@EnableFeignClients
public class EurekaClient1Application {

    @Autowired
    public DiscoveryClient discoveryClient;

    public static void main(String[] args) {
        SpringApplication.run(EurekaClient1Application.class, args);
    }

    @Autowired 
    FeingInterface feingInterface;




    @GetMapping("/hi/{name}")
    public String test(@PathVariable String name)
    {
        String h = feingInterface.test(name);

        return h;
    }
}
假接口

@FeignClient(name="client22",fallback=FallBack.class)
public interface FeingInterface {

    @GetMapping("/hiname/{name}")
    public String test(@PathVariable("name") String name);

}
后备班

@Component
class FallBack implements FeingInterface{

    @Override
    public String test(String name) {
        // TODO Auto-generated method stub
        return "fall back methord being called";
    }

}
在rest客户端中获取错误,但不是从回退方法获取错误

“时间戳”:1501950134118, “地位”:500, “错误”:“内部服务器错误”, “异常”:“java.lang.RuntimeException”, “消息”:“com.netflix.client.ClientException:负载平衡器没有可用于客户端的服务器:client22”


为了获取回退方法消息,我传递了client22 eureka id,该id在eureka服务器中不存在。我在pom中有stater佯装。有人能调查一下吗。

实际上,退路不是由外国自己来处理的,而是由断路器来处理的。因此,您需要将Hystrix(Netflix断路器)放在类路径上,并在application.yml文件中启用它,如下所示:

feign:
  hystrix:
    enabled: true

如果您在build.gradle或pom.xml文件中使用“cloud:spring cloud starter openfeign”,那么Hystrix应该自动位于您的类路径上。

回退实际上不是由Feign本身处理的,而是由断路器处理的。因此,您需要将Hystrix(Netflix断路器)放在类路径上,并在application.yml文件中启用它,如下所示:

feign:
  hystrix:
    enabled: true

如果您在build.gradle或pom.xml文件中使用'cloud:spring cloud starter openfeign',Hystrix应该会自动出现在您的类路径上。

我发现了一个与此相关的git问题,基本上是说“@FeignClient-annotated interface with fallback bean不能自动连接,因为它不是唯一的bean”,这个问题正在解决,现在@FeignClient现在是一个主bean()。但在这种情况下,我没有找到我所缺少的东西。我发现了一个与此相关的git问题,基本上说“@FeignClient注释接口与fallback bean不能自动连接,因为它不是唯一的bean”,这个问题正在解决,现在@FeignClient现在是一个主bean()。但在这种情况下,我没有找到我所缺少的。请添加对您的解决方案的解释(它如何与问题连接)请添加对您的解决方案的解释(它如何与问题连接)