服务接口调用-OpenFeign
Feign是什么:
Feign是一个声明式的web服务客户端,让编写web服务客户端变得非常容易,只需创建一个接口并在接口上添加注解即可。
Feign VS OpenFeign
POM依赖:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
主启动类添加@EnableFeignClients注解,开始Feign使用
对于业务类中,使用业务逻辑接口+@FeignClient配置调用provider服务
实例代码如下:
@Component
//value中参数为Eureka服务注册中心中的服务提供者的Name
@FeignClient(value = "CLOUD-PAYMENT-SERVICE")
public interface PaymentFeignService {
@GetMapping(value = "/payment/{id}")
public CommonResult getPaymentById(@PathVariable("id") Long id);
}
Controller
@RestController
public class OrderFeignController {
@Resource
private PaymentFeignService paymentFeignService;
@GetMapping(value = "/consumer/payment/{id}")
public CommonResult<Payment> getPaymentById(@PathVariable("id") Long id){
return paymentFeignService.getPaymentById(id);
}
}
*注意 Feign自带负载均衡配置项
关系*OpenFeign默认等待一秒钟,超过后报错
因为OpenFeign继承了Ribbon,所以修改超时控制需要在YML文件中修改
ribbon:
ReadTimeout: 5000
ConnectTimeout: 5000
*OpenFeign日志打印功能
配置日志的配置类:
@Configuration
public class FeignConfig {
@Bean
Logger.Level feignLoggerLevel(){
return Logger.Level.FULL;
/*
NONE默认,不显示任何日志
BASIC,仅记录请求方法,URL,响应码以及执行时间
HEADERS;除了BASIC中定义信息之外,还有请求和响应的头信息
FULL除了HEADERS中定义信息之外,还有请求和响应的正文以及元数据
*/
}
}
YML文件中需要开启日志的Feign客户端
logging:
level:
package.name.PaymentFeignService: debug
网友评论