Feign皆在使编写java http客户端变得更容易
通过feign只需要定义服务绑定接口且以声明式的方式,简单的实现了服务调用
Feign是Spring Cloud组件中的一个轻量级RESTful的http服务端,Feign内置了Ribbon,用来做客户端负载均衡,去调用服务注册中心的服务,Feign使用方式是:使用Feign的注解定义接口,调用这个接口,就可用调用服务注册中心的服务
OpenFeign是Spring Cloud在Feign的基础上支持了SpringMVC的注解,如@RequestMapping等,OpenFeign的@FeignClient可以解析SpringMVC的@RequestMapping注解下的接口,并通过动态代理的方式产生实现类,实现类中做负载均衡并调用其他服务
关键点1: pom.xml
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
<version>2.2.2.RELEASE</version>
</dependency>
关键点2: 启动类加上OpenFeign Client注解
@EnableFeignClients
关键点3: 定义OpenFeign Client接口
@Component
@FeignClient(value = "TCLOUD-PAYMENT-PROVIDER")
public interface PaymentFeignService {
@GetMapping("/payment/get/{id}") // 这个地址对应提供者的地址
public CommonResult<Payment> getPaymentById(@PathVariable("id") Integer id);
@GetMapping("/payment/create")
public CommonResult<Payment> create(Payment payment);
}
Controller示例
@GetMapping("/payment/get/{id}")
public CommonResult<Payment> getPaymentById(@PathVariable("id") Integer id)
{
return paymentFeignService.getPaymentById(id);
}
Feign超时
OpenFeign默认等待时间1秒种,超过就会报错
Feign日志
Feign提供日志功能,通过配置调整日志级别,从而了解Feign中http请求细节
NONE 默认,不显示任何日志
BASIC 仅记录请求方法、URL、响应状态码、执行时间
HEADERS 除了BASIC中定义的信息外,还有请求的响应头信息
FULL 除了HEADERS中定义的信息外,还有请求和响应的正文及元数据
修改日志级别
@Configuration
public class FeignLoggingConfig {
@Bean
Logger.Level feignLoggerLevel()
{
return Logger.Level.FULL;
}
}
不要忘记在application.yml中加上日志输出
logging:
level:
com.don.tcloud.customerorder.service.PaymentFeignService: debug #监控哪个接口
本文详细介绍了Feign和OpenFeign在Spring Cloud中的应用,包括如何通过声明式接口简化HTTP服务调用,实现客户端负载均衡。文章还涵盖了Feign的配置、日志设置及其与SpringMVC注解的结合使用。

6445

被折叠的 条评论
为什么被折叠?



