springcloud OpenFeign服务接口调用

代码下载地址

地址:https://github.com/13thm/study_springcloud/tree/main/days7_OpenFeign

OpenFeign简介

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

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

OpenFeign使用步骤

1.新建cloud-consumer-feign-order80
2.改POM
3. 改YML
4. 主启动
5. 业务类

可以换成 直接下载cloud-consumer-feign-order80 ,具体怎么改的具体看下载代码

测试

按顺序启动以下服务。
在这里插入图片描述

http://localhost/consumer/payment/get/1

在这里插入图片描述

OpenFeign超时控制

超时设置,故意设置超时演示出错情况

服务提供方8001故意写暂停程序

在8001 改写controller

添加一下(具体可看下载代码)

 @GetMapping(value = "/payment/feign/timeout")
    public String paymentFeignTimeOut()
    {
   
        System.out.println("*****paymentFeignTimeOut from port: "+serverPort);
        //暂停几秒钟线程
        try {
    TimeUnit.SECONDS.sleep(3); } catch (InterruptedException e) {
    e.printStackTrace(); }
        return serverPort;
    }
服务消费方80添加超时方法PaymentFeignService

添加

  @GetMapping(value = "/payment/feign/timeout")
    String paymentFeignTimeOut();
服务消费方80添加超时方法OrderFeignController

添加

 @GetMapping(value = "/consumer/payment/feign/timeout")
    public String paymentFeignTimeOut()
    {
   
        return paymentFeignService.paymentFeignTimeOut();
    }
测试
http://localhost/consumer/payment/feign/timeout

在这里插入图片描述

YML文件里需要开启OpenFeign客户端超时控制
server:
  port: 80

eureka:
  client:
    register-with-eureka: false
    service-url:
      defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/

#设置feign客户端超时时间(OpenFeign默认支持ribbon)
ribbon:
#指的是建立连接所用的时间,适用于网络状况正常的情况下,两端连接所用的时间
  ReadTimeout: 5000
#指的是建立连接后从服务器读取到可用资源所用的时间
  ConnectTimeout: 5000
测试
http://localhost/consumer/payment/feign/timeout

在这里插入图片描述

OpenFeign日志打印功能

NONE:默认的,不显示任何日志;



BASIC:仅记录请求方法、URL、响应状态码及执行时间;



HEADERS:除了 BASIC 中定义的信息之外,还有请求和响应的头信息;



FULL:除了 HEADERS 中定义的信息之外,还有请求和响应的正文及元数据。

配置日志bean

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import feign.Logger;

/**
 * @auther zzyy
 * @create 2019-11-10 17:00
 */
@Configuration
public class FeignConfig
{
   
    @Bean
    Logger.Level feignLoggerLevel()
    {
   
        return Logger.Level.FULL;
    }
}

在这里插入图片描述
改yml文件

server:
  port: 80

eureka:
  client:
    register-with-eureka: false
    service-url:
      defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/

#设置feign客户端超时时间
#springCloud默认开启支持ribbon
ribbon:
#指的是建立连接所用的时间,适用于网络状况正常的情况下,两端连接所用的时间
  ReadTimeout: 5000
#指的是建立连接后从服务器读取到可用资源所用的时间
  ConnectTimeout: 5000


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

相关推荐

  1. SpringCloud-使用Feign组件调用其他微服务接口

    2024-01-24 01:30:05       30 阅读
  2. Https接口调用问题

    2024-01-24 01:30:05       37 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-24 01:30:05       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-24 01:30:05       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-24 01:30:05       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-24 01:30:05       20 阅读

热门阅读

  1. seafile+onlyoffice集成部署

    2024-01-24 01:30:05       37 阅读
  2. 一文读懂 c++ 容器

    2024-01-24 01:30:05       35 阅读
  3. 【使用vue-cli构建项目详细介绍】

    2024-01-24 01:30:05       40 阅读
  4. 前端Vue开发规范

    2024-01-24 01:30:05       27 阅读
  5. EXCEL VBA两列判断重复

    2024-01-24 01:30:05       36 阅读
  6. ZZULIOJ 1054: 猴子吃桃

    2024-01-24 01:30:05       37 阅读
  7. 动态规划学习——赢得最大数

    2024-01-24 01:30:05       38 阅读