美文网首页
spring cloud 之网络框架Feign

spring cloud 之网络框架Feign

作者: 走在冷风中吧 | 来源:发表于2020-02-24 23:18 被阅读0次

Feign替代了RestTemplate, 进行网络请求的封装, 更加符合面向接口编程的思想

快速集成

  1. pom.xml
 <!--配置feign-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>
  1. 在调用工程中新增userservice接口
@FeignClient("provider-service")  //参数为微服务提供者的application name
@RequestMapping("/user")
public interface UserService {

    @RequestMapping("/findAll")
    String findAll();

}
  1. Application类配置类上增加@EnableFeignClients注解
  2. 在Controller中使用@Autowired注解注入UserService, 通过userservice调动微服务的接口地址
@RestController
@RequestMapping("/users")
public class UserController {

    @Autowired
    private UserService userService;

    @RequestMapping("/findAll")
    private String findAll(){
        return userService.findAll();
    }


}

ps: Feign默认自动开起来轮询方式的负载均衡, 无需手动设置

Feign熔断器支持:

  1. 开启熔断器application.yml文件
feign:
    hystrix:
      enabled: true # 开启Feign的熔断功能
  1. 新增fallback类, 实现feign的service接口
@Component  //注意需要注入到spring容器
public class UserFallBack implements UserService {
    @Override
    public String findAll() {
      //降级处理方法
        return "用户不存在";
    }
}
  1. FeignClient上声明降级类 fallback = UserFallBack.class
@FeignClient(value = "provider-service", fallback = UserFallBack.class)  //参数为微服务提供者的application name
public interface UserService {

    @RequestMapping("/user/findAll")
    String findAll();

}
  1. 将调用服务停掉即可看到熔断效果

请求压缩和响应压缩

feign:
    compression:
        request:
            enabled: true # 开启请求压缩
        response:
            enabled: true # 开启响应压缩

对请求的数据类型,以及触发压缩的大小下限进行设置

# Feign配置 
feign:
    compression:
        request:
           enabled: true # 开启请求压缩
           mime-types: text/html,application/xml,application/json # 设置压缩的数据类型
           min-request-size: 2048 # 设置触发压缩的大小下限 
          #以上数据类型,压缩大小下限均为默认值

配置日志级别

  1. 在consumer的application.yml中配置只针对debug下开启 com.lily下的网络日志
# com.lily 包下的日志级别都为Debug 
logging:
  level:
    com.lily: debug
  1. 新增Feign日志管理配置类
@Configuration
public class FeignConfiguration {

    @Bean
    public Logger.Level feignLoggerLevel(){
        //全日志级别开启
        return Logger.Level.FULL;
    }

}

  1. 在FeignClient中进行配置:configuration = FeignConfiguration.class
//value 参数为微服务提供者的application name
//fallback 配置熔断降级处理类
//configuration 配置feign日志级别管理类
@FeignClient(value = "provider-service", fallback = UserFallBack.class,
        configuration = FeignConfiguration.class)
public interface UserService {

    @RequestMapping("/user/findAll")
    String findAll();

}

  1. 重启项目

ps: 基于feign调用接口时, 参数不能传递null, 否则会400

相关文章

网友评论

      本文标题:spring cloud 之网络框架Feign

      本文链接:https://www.haomeiwen.com/subject/xrdvqhtx.html