SpringCloud服务接口调用
OpenFeign
是什么?
能干啥?
两者区别
OpenFeign使用
接口+注解
微服务调用接口+@FeignClient
Feign在消费端使用
新建cloud-consumer-feign-order80
导入eureka和openfeign依赖:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
写yml文件:
server:
port: 8080
eureka:
client:
register-with-eureka: false
service-url:
defaultZone: http://localhost:7001/eureka
项目结构:
Main层代码
@SpringBootApplication
@EnableFeignClients//启用Feign客户端
public class Main {
public static void main(String[] args) {
SpringApplication.run(Main.class);
}
}
service层
这里的@FeignClient中的value属性值对应的是8001端口注册进入eureka里面的微服务
controller层
总结:
相当于用户输入localhost:8080/consumer/payment/get/1
调用了paymentFeignService层的方法
又调用了CLOUD-PAYMENT-SERVICE这个微服务的/payment/get/1
我们明明没有写dao层,mybatis等等却拿到了数据,体现了服务接口调用的功能!
OpenFeign超时控制
OpenFeign默认等待1秒钟,吵过后报错
我们写了一个白等3秒钟的程序,让服务端去调用,就会报错
==
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-a4bktlt4-1685877591944)(C:\Users\11254\AppData\Roaming\Typora\typora-user-images\image-20230604182256609.png)]
我们可以在yml文件中修改等待的时间:
修改完,再次启动,OpenFeign,启动!
服务就会在转3s后返回,不会报错:
OpenFeign日志增强
日志级别
创建配置类
logging:
level:
com.atguigu.springcloud.service.PaymentFeignService: debug
#feign日志以哪个级别控制哪个接口
可以看出日志非常详细
ljCQvX-1685877591945)]