https://github.com/spring-cloud/spring-cloud-openfeign
openFeign, fegin 👆
- open fegin
- openFegin使用
- 日志打印配置类
open fegin
- Feign是一个声明式的web服务客户端,让编写web服务客户端变得非常容易,只需创建一个接口并在接口上添加注解即可。
- feign简化了spring cloud ribbon, 自身集成了ribbon, 可负载均衡。
- 面向接口服务调用.
- openFegin支持springmvc 注解,取代fegin,fegin out…
openFegin使用
pom
<!-- open-feign demo, based on client~ and get a ribbon~ --><!--https://github.com/spring-cloud/spring-cloud-openfeign--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId></dependency>
yaml
超时控制和日志记录
server:port: 80# 未暴露服务名,属于客户端eureka:client:register-with-eureka: falseservice-url:defaultZone: http://eureka7001.com:7001/eureka,http://eureka7002.com:7002/eureka# 设置feign客户端超时时间(OpenFeign支持默认支持ribbon)
ribbon:# 建立连接所有的时间,适用于网络正常的情况下,两端连接所有的时间ReadTimeout: 5000# 指的是建立连接后从服务器读取到可用资源的时间ConnectTimeout: 5000# feign 调用远程服务日志记录
logging:# 需要开启日志的客户端level:top.bitqian.springcloud.service.PaymentFeignService: debug
主启动
@EnableFeignClients
服务接口, 调用服务提供者
package top.bitqian.springcloud.service;import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import top.bitqian.springcloud.entity.CommonResult;
import top.bitqian.springcloud.entity.Payment;/*** 业务层 feign~* 需要feignClient 和 服务提供者的接口* restTemplate + ribbon 是一套~* @author echo lovely* @date 2020/12/8 22:02*/// 被调用的微服务名称
@FeignClient(value = "CLOUD-PAYMENT-SERVICE")
@Component
public interface PaymentFeignService {@GetMapping("/payment/get/{id}")CommonResult<Payment> getPaymentById(@PathVariable("id") Long id);// 模拟某个业务进行,调用feign接口@GetMapping("/payment/feign/timeout")String paymentFeignTimeout();
}
日志打印配置类
package top.bitqian.springcloud.config;import feign.Logger;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;/*** 记录调用服务端的日志* 通过调整日志级别,从而了解Feign中的http请求细节* 对feign接口调用情况,进行监控和输出~* None 默认的不显示任何日志* BASIC 仅记录请求方法,url,响应状态码,及执行时间* HEADERS basic 请求响应的头信息* FULL headers 请求响应的正文,数据* @author echo lovely* @date 2020/12/9 22:26*/@Configuration
public class FeignConfig {// 响应,请求信息~@BeanLogger.Level feignLoggerLevel() {return Logger.Level.FULL;}
}