美文网首页
springCloud Finchley 实战入门(基于spri

springCloud Finchley 实战入门(基于spri

作者: 同学汇俱乐部 | 来源:发表于2018-07-26 15:25 被阅读234次

    Fegin 介绍

    spring cloud fegin ,他是基于Netflix Fegin实现得,整合了spring cloud Ribbon和spring cloud Hystrix,除了整合这两者得功能外,他还提供了了一种声明式得Web服务客户端定义方式。

    快速入门

    创建一个spring boot项目命名为"eureka-bussniss-service-user-client-fegin",选择server和fegin的依赖;


    1532587428278.png

    application.yml相关配置:

    spring:
      application:
        name: service-user-client-fegin
    server:
      port: 9001
    eureka:
      client:
        serviceUrl:
          defaultZone: http://peer1:8762/eureka/,http://peer2:8763/eureka/
    feign:
      hystrix:
        enabled: true
    

    项目主类EurekaBussnissServiceUserClientFeginApplication,添加@EnableEurekaClient和@EnableFeignClients注解

    @SpringBootApplication
    @EnableEurekaClient
    @EnableFeignClients
    public class EurekaBussnissServiceUserClientFeginApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(EurekaBussnissServiceUserClientFeginApplication.class, args);
        }
    }
    

    我们以eureka-bussniss-service-user的服务例。在fegin项目中定义一个接口"UserFeignClient"

    /**
     * 标明feign调用的微服务名称
     */
    //通过@ FeignClient(“服务名”),来指定调用哪个服务。
    // 比如在代码中调用了service-hi服务的“/hi”接口,还可以使用url参数指定一个URL
    // fallback  出现错误回调类
    @FeignClient(name = "service-user",fallback = UserFallback.class)
    public interface UserFeignClient {
    
        /**
         * 对应service-user微服务中的URL
         * @return
         */
        @GetMapping("/listUsers")
        String listUsers();
    
    }
    
    

    接着,创建一个Controller来实现对Fegin客户端的调用,使用@Autowired自动注入上面的“UserFeignClient ”实例。并且通过方法实现对service-user的服务发起调用。

    @RestController
    public class UserFeignApi {
        /**
         * 将刚才定义的userFeignClient注入,并当成普通的接口调用即可
         */
        @Autowired
        private UserFeignClient userFeignClient;
    
        @GetMapping("/listUsersByFeign")
        public String ListUsers(){
            String users = this.userFeignClient.listUsers();
            return users;
        }
    }
    

    方式测试fegin的负载均衡以及服务容错保护的功能,我们创建了一个UserFallback实现UserFeignClient。实现接口请求错误的反馈

    @Component
    public class UserFallback implements UserFeignClient {
        @Override
        public String listUsers() {
            return "服务调用失败";
        }
    }
    

    包路径截图


    1532588267196.png

    到这里就已经基本完成了,依次启动service-user(8802,8803两个端口)、fegin。


    1532588691914.png

    访问fegin项目的地址http://localhost:9001/listUsersByFeign

    1532588711363.png
    1532588720488.png

    重复请求,会发现接口数据是依次返回8802和8803的数据的。

    现在把其中一个service-user服务停掉(8803),一开始当请求负载到8803这个服务实例时,因为当前的服务已经停掉了,所以接口响应显示了我们实现了UserFallback 类的返回。


    1532588846177.png

    再过几秒钟后,我们继续请求会发现,接口已经全部负载到了8802的服务实例了。


    1532588992210.png

    所以可以看到fegin已经实现了Ribbon和Hystrix的功能了。

    github 项目源码

    下一篇我们将实现spring cloud config分布式配置中心的组件。

    相关文章

      网友评论

          本文标题:springCloud Finchley 实战入门(基于spri

          本文链接:https://www.haomeiwen.com/subject/wzebmftx.html