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技术,所有也支持负载均衡作用。