大纲
一、简介
官方文档:OpenFeign官网地址 、 学习地址
Feign是一个声明式 Web 服务客户端。它使编写 Web 服务客户端变得更容易。
二、代码实现
2.1 客户端启动类添加@EnableFeignClients
@SpringBootApplication
@EnableFeignClients
public class OrderFeignMain80 {
public static void main(String[] args) {
SpringApplication.run(OrderFeignMain80.class, args);
}
}
2.2 客户端yml文件
server:
port: 80
eureka:
client:
# true表示向注册中心注册自己,默认为true
register-with-eureka: false
# 设置与eureka sever交互的地址、查询服务、注册服务
service-url:
defaultZone : http://eureka7001.com:7001/eureka/, http://eureka7002.com:7002/eureka/
2.3 客户端控制层
@RestController
@RequestMapping(value = "/consumer/payment")
public class PaymentController {
@Resource
private OrderFeign orderFeign;
@GetMapping(value = "/getPort")
public Result<String> getServerPort(){
return orderFeign.getServerPort();
}
}
2.4 客户端接口类添加@FeignClient
/**
* @author hanyulin
* @apiNote FeignClient : 指明服务端是 cloud-payment-service 模块,value大小写都行
* @date 2021/11/29 14:17
*/
@FeignClient(value = "cloud-payment-service")
public interface OrderFeign {
/*
* 服务端的接口
*/
@GetMapping(value = "/payment/getPort")
Result<String> getServerPort();
}
2.5 服务端controller
@RestController
@RequestMapping("/payment")
public class PaymentController {
@Value("${server.port}")
private String serverPort;
/**
* 获取端口号
*
* @author hanyulin
* @date 2021/11/29 9:08
* @return Result<java.lang.String>
*/
@GetMapping(value = "/getPort")
public Result<String> getServerPort(){
return new Result(200,"success",serverPort);
}
}
测试
三、总结
- 大体的结构就是:controller(客户端入口) --> OpenFeign(客户端转发) --> controller(服务端:进行业务的处理)
- 实现思路:启动类(@EnableFeignClients) 、yaml文件(配置服务注册中心交互的地址)、控制类(前端调用的入口)、接口类(往服务端转发的url,由服务端去做处理,@FeignClient)
上一章:chapter12:Ribbon手写轮询算法
下一章:chapter14:OpenFeign的超时控制