spring cloud alibaba 基本负载均衡(五)

openfeign的基本配置

1、日志配置

添加日志配置类:

package com.lemon.open.config;

import feign.Logger;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * Feign配置类,全局配置
 */
@Configuration
public class FeignConnfig {

    @Bean
    public Logger.Level feignLoggerLevel(){
        return  Logger.Level.FULL;
    }
}

注意: 导入的是
import feign.Logger;

配置文件中进行配置:

server:
  port: 9999

spring:
  application:
    name: lemon-openfeign
  cloud:
    nacos:
      server-addr: 127.0.0.1:8848
      discovery:
        username: nacos
        password: nacos

#springboot默认级别为info,feign的日志级别为debug,因此需要设置feign日志界别
logging:
  level:
    com.lemon.open.feign: debug #默认设置所有的日志级别,这里指定包名可以设置指定包调用时的日志级别

或者在接口配置中配置configuration进行配置


//name 表示需要调用的服务的名称
// path 表示调用服务所在的controller类主机的接口地址,如果没有可以不写
@FeignClient(name = "stock-service",path = "/stock",configuration=FeignConfig.class)
public interface StockFeignService {


    // 声明需要调用的方法
    // 此方法和服务提供者的接口保持一致
    @GetMapping("/index")
    String index();


}

2、契约配置:将springmvc的注解转换为Feign的原生注解

支持原生注解:

       1、 添加配置Bean

@SpringBootApplication
@EnableFeignClients
public class OpenApplocation {

    public static void main(String[] args) {
        SpringApplication.run(OpenApplocation.class,args);
    }


    @Bean
    public Contract feignContract(){
        return new Contract.Default();
    }
}

        2、配置文件:

扫描二维码关注公众号,回复: 13461667 查看本文章

                        feign:

                                client:

                                        config:

                                                服务名:

                                                        contract: feign.Contract.Default

                如果配置了锲约那么需要将接口都转换成为feign原生过的注解才可以

3、超时配置:远程请求超时配置

        1、配置bean:

package com.lemon.open;

import feign.Contract;
import feign.Request;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.context.annotation.Bean;

@SpringBootApplication
@EnableFeignClients
public class OpenApplocation {

    public static void main(String[] args) {
        SpringApplication.run(OpenApplocation.class,args);
    }

//
//    @Bean
//    public Contract feignContract(){
//        return new Contract.Default();
//    }
    
    @Bean
    public Request.Options options(){
        return new Request.Options(5000,10000);
    }
}

        2、配置文件配置:

feign:
  client:
    config:
      stock-service: #请求的服务名称
        connectTimeout: 5000
        readTimeout: 3000

4、自定义拦截器:消费端请求提供端的时候定义的拦截器

        1、定义拦截器实现接口

        RequestInterceptor

                这个接口是feign的接口

package com.lemon.open.intercptor.feign;

import feign.RequestInterceptor;
import feign.RequestTemplate;

public class CustomFeignInterceptor  implements RequestInterceptor {
    @Override
    public void apply(RequestTemplate requestTemplate) {
        // 拦截器的使用
        System.out.println("inteee---------------------------------------------------");
        System.out.println(requestTemplate);
    }
}

        2、实现Bean配置

@SpringBootApplication
@EnableFeignClients
public class OpenApplocation {

    public static void main(String[] args) {
        SpringApplication.run(OpenApplocation.class,args);
    }

//
//    @Bean
//    public Contract feignContract(){
//        return new Contract.Default();
//    }

//    @Bean
//    public Request.Options options(){
//        return new Request.Options(5000,10000);
//    }

    @Bean
    public CustomFeignInterceptor customFeignInterceptor(){
        return new CustomFeignInterceptor();
    }
}

猜你喜欢

转载自blog.csdn.net/qq_31319235/article/details/121382048