SpringCloud服务接口调用

SpringCloud服务接口调用

OpenFeign

是什么?

能干啥?

两者区别

SpringCloud服务接口调用_第1张图片

OpenFeign使用

接口+注解

微服务调用接口+@FeignClient

Feign在消费端使用

新建cloud-consumer-feign-order80

导入eureka和openfeign依赖:


    org.springframework.cloud
    spring-cloud-starter-netflix-eureka-client



    org.springframework.cloud
    spring-cloud-starter-openfeign

写yml文件:

server:
  port: 8080


eureka:
  client:
    register-with-eureka: false
    service-url:
      defaultZone: http://localhost:7001/eureka

项目结构:

SpringCloud服务接口调用_第2张图片

Main层代码

@SpringBootApplication
@EnableFeignClients//启用Feign客户端
public class Main {
    public static void main(String[] args) {
        SpringApplication.run(Main.class);
    }
}

service层

SpringCloud服务接口调用_第3张图片

这里的@FeignClient中的value属性值对应的是8001端口注册进入eureka里面的微服务
SpringCloud服务接口调用_第4张图片

controller层

SpringCloud服务接口调用_第5张图片

总结:

相当于用户输入localhost:8080/consumer/payment/get/1

调用了paymentFeignService层的方法

又调用了CLOUD-PAYMENT-SERVICE这个微服务的/payment/get/1

SpringCloud服务接口调用_第6张图片

我们明明没有写dao层,mybatis等等却拿到了数据,体现了服务接口调用的功能!

OpenFeign超时控制

OpenFeign默认等待1秒钟,吵过后报错

我们写了一个白等3秒钟的程序,让服务端去调用,就会报错

SpringCloud服务接口调用_第7张图片

==

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-a4bktlt4-1685877591944)(C:\Users\11254\AppData\Roaming\Typora\typora-user-images\image-20230604182256609.png)]

我们可以在yml文件中修改等待的时间:

SpringCloud服务接口调用_第8张图片

修改完,再次启动,OpenFeign,启动!

服务就会在转3s后返回,不会报错:

SpringCloud服务接口调用_第9张图片

OpenFeign日志增强

SpringCloud服务接口调用_第10张图片

日志级别

SpringCloud服务接口调用_第11张图片

创建配置类
SpringCloud服务接口调用_第12张图片

logging:
  level:
    com.atguigu.springcloud.service.PaymentFeignService: debug
    #feign日志以哪个级别控制哪个接口

可以看出日志非常详细

SpringCloud服务接口调用_第13张图片

ljCQvX-1685877591945)]

你可能感兴趣的:(spring,cloud,eureka,java)