作者微信 bishe2022

代码功能演示视频在页面下方,请先观看;如需定制开发,联系页面右侧客服

    实例演示了SpringCloud的Feign来调用注册到 Eureka上的接口服务,当接口服务发生异常时, 可以将Feign结合Hystrix进行关联使用, 以实现接口异常时服务仍能正常对外提供, 实例包含三个项目 Feign,  Product(接口服务), eureka(注册中心)


SpringCloud视频教程【查看】

项目对应的实例代码可以通过【下载实例】按钮获取

开发工具: IntelliJ IDEA2017, JDK1.8, Maven 3.0.2

【项目包含内容】(见下图):   

eureka   :     服务注册中心

feign      :     feign方式调用远程接口

product :      远程接口提供者

image.png


1. 将三个项目解压并且分别用Intelli IDEA2017打开

2.  首先启动eureka, 监听端口为: 8761, 启动成功后, 访问:  http://localhost:8761/

      image.png


3. 启动 feign, 监听端口为: 8080;        启动 product, 监听端口为: 8005

4. 三个服务都启动成功后,可以看到上图有二个服务  FEIGN-CLIENT, PRODUCT 成功注册到EUREKA上了

5. product提供服务接口

@GetMapping("/msg")
public String msg(HttpServletRequest request){
    HttpSession session  = request.getSession();
    Object object = (Object)session.getAttribute("test");
    String str = "";
    if(null == object){
        session.setAttribute("test", "gepanjiang 8081");
        str = "gepanjiang 8081";
    }else{
        str = (String)object;
    }

    return "this is product msg 8081, sessionId;" + str;
}

6. feign项目 中配置 feign 方式访问 product 提供的服务

    ProductClientFallback是Feign与Hystrix结合使用配置熔断

注意: ProductClientFallback 的注解 @Component,  在springboot容器中加入 ProductClientFallback 对象

    一般在实际开发中,接口服务方会提供一个接口jar包, 但feign工程不会扫描到jar包中的@Component注解, 所以需要在

SpringBoot启动类上添加相应的扫描范围, 否则启动报错

@FeignClient(name = "product", fallback = ProductClient.ProductClientFallback.class)
public interface ProductClient {
    @GetMapping("/msg")
    String msg();

    @Component
    static class ProductClientFallback implements ProductClient{

        @Override
        public String msg() {
            return "发生熔断";
        }
    }
}


7. 在浏览器中输入  http://localhost:8080/getProductMsg 来调用feign的接口, 发现服务正常

    image.png

然后关闭 product服务, 再次访问  http://localhost:8080/getProductMsg   , 发生了Hystrix服务降级

image.png


Home