Feign声明式服务调用

Feign声明式服务调用

  • Feign是一个声明式的REST客户端,它用了基于接口的注解方式,很方便实现客户端配置
  • Feign最初由Netflix公司提供,但不支持SpringMVC注解,后由SpringCloud对其封装,支持了SpringMVC注解

Feign快速入门

步骤:

  1. 在消费端引入open-feign依赖

            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-openfeign</artifactId>
            </dependency>
    
  2. 编写feign调用接口

    /**
     * Feign的声明式接口,发起远程调用
     *
     * 1.定义接口
     * 2.接口上添加@FeignClient,设置value属性为服务提供者的名称
     * 3.编写调用接口,接口的声明规则和提供方保持一致
     */
    @FeignClient(value = "FEIGN-PROVIDER")
    public interface GoodsFeignClient {
        @GetMapping("goods/findOne/{id}")
        public Goods findGoodsById(@PathVariable("id") int id);
    }
    
  3. 在启动类添加@EnableFeignClients注解,开启Feign功能

    @EnableDiscoveryClient // 激活DiscoveryClient
    @EnableEurekaClient
    @SpringBootApplication
    @EnableFeignClients//开启Feign功能
    public class ConsumerApp {
        public static void main(String[] args) {
            SpringApplication.run(ConsumerApp.class,args);
        }
    }
    
  4. 测试调用

        @Autowired
        private GoodsFeignClient goodsFeignClient;
        @GetMapping("/goods/{id}")
        public Goods findGoodsById(@PathVariable("id") int id){
            Goods goods = goodsFeignClient.findGoodsById(id);
    
            return goods;
        }
    }
    

Feign超时配置

  • Feign底层依赖于Ribbon实现负载均衡和远程调用

  • Ribbon默认超时时间为1秒

  • 在消费方超时配置:

    ribbon:
    	connectTimeout: 1000 #链接超时时间为毫秒
    	ReadTimeout: 3000 #逻辑处理超时时间,毫秒
    

Feign日志记录

  • Feign只能记录debug级别的日志信息

    #设置项目日志级别为debug
    logging:
    	level:
    		com.xxx: debug  #包名
    
  • 定义Feign日志级别Bean

        /*
                NONE,不记录
                BASIC,记录基本的请求行,响应状态码数据
                HEADERS,记录基本的请求行,响应状态码数据,记录响应头信息
                FULL,记录完成的请求,响应数据
         */
    @Bean
    Logger.Level feignLoggerLevel(){
        return Logger.Level.FULL;
    }
    
  • 启用该Bean

    @FeignClient(configuration = XxxCOnfig.class)
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值