04.服务接口调用——OpenFeign

OpenFenix介绍
  • 负责服务接口调用
  • 不属于SpringCloud Netflix
  • 替代了SpringCloud Netflix的中的Feign
  • Feign是一个声明式的WebService客户端
  • 使用Feign只需要创建一个接口并添加MVC注解即可
  • Feign自己集成了Ribbon
使用OpenFeign
  1. 引入依赖
  2. 创建接口并添加MVC注解
  3. 启动类添加注解——@EnableFeignClients
依赖
dependency
	groupIdorg.springframework.cloud/groupId
	artifactIdspring-cloud-starter-openfeign/artifactId
/dependency
接口
@FeignClient(name = "提供者的spring.application.name")
public interface PaymentFeignService {
    //接口里的方法直接把要调用的controller的方法粘过来(不要方法体)
    /**
     * 根据ID获取payment
     * @param id
     * @return
     */
    @GetMapping("/payment/get/{id}")
    CommonResult getPaymentById(@PathVariable(value = "id") Long id);
}
OpenFeign的超时控制

Feign只会等待一秒如果一秒没有结果就会报错,可以通过配置底层Ribbon来控制

ribbon:
  ReadTimeout: 5000
  ConnectTimeout: 5000
OpenFeign的日志打印
  1. OpenFeign的日志级别有4个:NONE,BASIC,HEADERS,FULL。
  2. NONE——默认的不显示任何日志
  3. BASIC——记录请求方法,URL,响应状态码,执行时间
  4. HEADERS——除了BASIC有的还有请求和响应的头信息
  5. FULL——除了HEADERS有的还有请求和响应的正文及元数据
  6. 配置方式如下:
/**
 * 配置Feign的日志级别
 * @author 单国玉
 * @created 2020/11/2
 */
@Configuration
public class FeignConfig {
    @Bean
    Logger.Level level(){
        return Logger.Level.FULL;
    }
}
#Feign日志以什么级别监控哪个接口
logging:
  level:
    #Feign接口的全类名
    cn.shanguoyu.springcloud.service.PaymentFeignService: debug
OpenFeign配置负载均衡
  • Feign集成了Ribbon,默认通过轮询实现客户端负载均衡。
  • 修改consumer的配置文件即可
#默认的配置项
提供者的名字.ribbon.NFLoadBalancerRuleClassName=com.netflix.loadbalancer.RandomRule
#可以配置一下类名
#com.netflix.loadbalancer.RandomRule #配置规则 随机
#com.netflix.loadbalancer.RoundRobinRule #配置规则 轮询
#com.netflix.loadbalancer.RetryRule #配置规则 重试
#com.netflix.loadbalancer.WeightedResponseTimeRule #配置规则 响应时间权重
#com.netflix.loadbalancer.BestAvailableRule #配置规则 最空闲连接策略
#自定义全类名
注意事项
  1. 在实际使用中会把Feign接口定义到通用模块中去来复用
  2. @PathVariable注解必须添加value
  3. @RequestMapping注解中的URL必须与provider中一致
  4. @RequestMapping不能修饰接口,否则404
最新回复(0)
/jishuFgNg08fZKptjCpcha_2B5RbBrv_2BgVKzf5E_2Bgx8NRizgTM_3D4858635
8 简首页