6、Feign

2018-06-22  本文已影响0人  紫雨杰

一、Feign的概述

(1)、Feign 默认集成了Ribbon,默认通过轮询实现客户端的负载均衡。

(2)、与Ribbon不同的是,通过Feign只需要定义服务绑定接口且以声明式的方法,简单的实现服务调用;

二、Feign的使用步骤:

    ①、在pom.xml文件中导入Feign的依赖:
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-feign</artifactId>
        </dependency>

    ②、在定义的接口类上使用@FeignClient("微服务的名称"),接口中只需声明要调用服务方法的名字,返回值,参数,
       请求方式和路径即可,无需具体实现;

例如:

@FeignClient(name = "zhengtoon-gwmonitor", fallback = IMonitorLogFeignClient.class)
public interface IMonitorLogFeignClient {
   /**
     * 获取服务状态监控正常列表接口
     * @param pageSize    页面大小
     * @param curPage     当前页
     * @return
     */
    @RequestMapping(value = "/service/getNormalServicesByConditions", method = RequestMethod.POST)
    ResponseResult<MyPage<ServiceStatusVo>> getNormalServicesByConditions(
            @RequestParam(value = "pageSize", defaultValue = "10") int pageSize,
            @RequestParam(value = "curPage", defaultValue = "1") int curPage);
}

//MICROSERVICECLOUD-DEPT微服务已经注册进了服务注册中心
@FeignClient(value = "MICROSERVICECLOUD-DEPT")
public interface DeptClientService {

    @PostMapping("/dept/add")
    boolean add(Dept dept);

    @GetMapping("/dept/get/{id}")
    Dept get(@PathVariable("id") Long id);

    @GetMapping("/dept/list")
    List<Dept> list();

}

    ③、在主配置类上添加注解:@EnableFeignClients 即可


Feign通过接口的方法调用Rest服务(之前是Ribbon + RestTemplate),
该请求发送给Eureka服务器(http://MICROSERVICECLOUD-DEPT/dept/list),
通过Feign直接找到服务接口,由于在进行服务调用的时候融合了Ribbon技术,所有也支持负载均衡作用。
上一篇 下一篇

猜你喜欢

热点阅读