SpringCloud之OpenFeign

说明:关于SpringCloud系列的文章中的代码都在码云上面
地址:https://gitee.com/zh_0209_java/springcloud-alibaba.git

简介

Feign 是一个声明式WebService客户端。使用Feign能让编写Wen Service客户端更加简单。

他的使用方法是定义一个服务接口然后在上面添加注解。Feign 也支持可拔插式的编码器和解码器。Spring Cloud 对Feign 进行了封装,使其支持了Spring MVC标准和HttpMessageConverters.Feign可以与Eureka和Ribbon组合使用以支持负载均衡

使用

feign的使用都是在消费方

  1. 引入Open Feign依赖
<!--open feign -->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>

在这里插入图片描述
可以看到OpenFeign默认也是集成了Ribbon

  1. 在启动类上开启feign
@SpringBootApplication
@EnableEurekaClient
@EnableFeignClients
public class OrderFeignApplication {

	public static void main(String[] args) {
		SpringApplication.run(OrderFeignApplication.class,args);
	}
	
}
  1. 定义接口
    定义的接口就是你想要调用提供方的接口
@Component
// 想要调用提供方的接口,必须加@FeignClient注解,value的值就是提供方服务的服务名称
@FeignClient(value = "cloud-payment-service")
public interface PaymentService {

    // 这个路径就是提供方的方法路径,参数和返回值必须一致,方法名称最好一致
	@GetMapping("/payment/{id}")
	Result<?> getPaymentById(@PathVariable("id") Long id);
}
  1. 在自己的方法中注入接口直接使用即可
@RestController
@RequestMapping("order")
@Slf4j
public class OrderFeignController {

	// 将feign接口注入进来
	@Autowired
	private PaymentService paymentService;

	@GetMapping("/{id}")
	Result<?> getPaymentById(@PathVariable Long id){
		// 可以直接使用
		return paymentService.getPaymentById(id);
	}
}
  1. 访问测试,发现open Feign 自带负载均衡的功能
OpenFeign超时控制

OpenFeign 默认超时时间为1秒,如果超过1秒就报错

因为OpenFeign 自带着Ribbon,所有他的超时控制也由底层的Ribbon来进行限制

# 设置feign 客户端超时时间(OpenFeign 默认支持 Ribbon)
ribbon:
  ReadTimeout: 5000     # 处理请求的超时时间,默认为5秒
  ConnectTimeout: 5000  # 连接建立的超时时间,默认为5秒
#  MaxAutoRetries: 1     # 同一台实例的最大重试次数,但不包括首次调用,默认为1次
#  MaxAutoRetriesNextServer: 0 # 重试负载均衡其他实例的最大重试次数,不包括首次调用,默认为0次
#  OkToRetryOnAllOperations: false # 是否对所有操作都重试,默认为false
OpenFeign日志打印功能

Feign 提供了日志打印功能,我们可以通过配置来调整日志级别,从而了解Feign 中Http 请求的细节。

说白了就是对Feign接口的调用情况进行监控和输出

日志级别

  • NONE: 默认的,不显示任何日志;
  • BASIC : 仅记录请求方法,URL,响应状态码及执行时间;
  • HEADERS: 处理BASIC 中定义的信息之外,还有请求和响应的头信息;
  • FULL: 处理HEADERS 中定义的信息之外,还有请求和响应的正文及元数据;

配置日志

  1. 创建feign配置文件
@Configuration
public class FeignConfig {

	@Bean
	public Logger.Level feignLoggerLevel(){
		return Logger.Level.FULL;
	}
}
  1. 修改配置文件
logging:
  level:
    # feign 日志以什么级别监控那个接口
    com.zh.springcloud.feign.PaymentService: debug
  1. 启动访问测试
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值