OpenFeign 简介 Feign 是一个声明式的Web服务客户端,让编写Web服务客户端变得非常容易,只需要创建一个接口并在接口上添加注解即可。
使用步骤 application.yml
1 2 3 4 5 6 7 server: port: 80 eureka: client: register-with-eureka: false service-url: defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/
主启动类添加注解@EnableFeignClients
service层
1 2 3 4 5 6 7 8 9 @Component @FeignClient (value = "CLOUD-PAYMENT-SERVICE" )public interface PaymentFeignService { @PostMapping ("/payment/create" ) public CommonResult<Integer> create (@RequestBody Payment payment) ; @GetMapping ("/payment/get/{id}" ) public CommonResult<Payment> queryOne (@PathVariable("id" ) Long id) ; }
controller层
1 2 3 4 5 6 7 8 9 10 11 @RestController public class OrderFeignController { @Resource private PaymentFeignService paymentFeignService; @GetMapping ("/customer/payment/get/{id}" ) public CommonResult<Payment> getPaymentById (@PathVariable("id" ) Long id) { return paymentFeignService.queryOne(id); } }
超时控制 默认超时报错时间:1s
application.yml
1 2 3 4 5 6 ribbon: ReadTimeout: 5000 ConnectTimeout: 5000
日志增强 日志级别
NONE:磨人的,不显示任何日志;
BASIC:仅记录请求方法、URL、相应状态码及执行时间。
HEADERS:除了BASIC中定义的信息之外,还有请求和相应的头信息。
FULL:除了HEADERS中定义的信息之外,还有请求和响应的正文及元数据。
FeignConfig.class
1 2 3 4 5 6 7 8 @Configuration public class FeignConfig { @Bean Logger.Level feignLoggerLevel () { return Logger.Level.FULL; } }
application.yml
1 2 3 4 logging: level: com.tan.service.PaymentFeignService: debug
总结
基本使用
主启动类加@EnableFeignClients
Feign接口加@FeignClient(value = "服务名称")
Feign接口的方法头上加调用接口访问地址例如:@GetMapping("/payment/get/{id}")
超时控制
默认使用ribbon1s
超时
在配置文件中配置超时时间,参数:ribbon.ReadTimeout
、ribbon.ConnectTimeout
日志增强
配置类返回Logger.Level
配置文件开启debug,例如:logging.level.com.tan.service.PaymentFeignService=debug