[toc]

作者:雨中散步撒哈拉
来源:https://liudongdong.top
公众号:雨中散步撒哈拉
备注:欢迎关注公众号,学习技术,一起成长!

一、超时控制

1. 修改提供服务模块

修改范围:cloud_learn_store_7001、cloud_learn_store_7002
修改内容:PaymentController添加如下接口

@GetMapping(value = "/payment/feign/timeout")
    public String getPaymentFeignTimeout(){

        try {
            TimeUnit.SECONDS.sleep(3);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        return portServer;
    }

2. 修改调用服务模块

1. 修改service层

修改范围:cloud_learn_users_feign_8004
修改内容:PaymentFeignService

@GetMapping(value = "/payment/feign/timeout")
public String getPaymentFeignTimeout();

2. 修改controller层

修改范围:cloud_learn_users_feign_8004
修改内容:OrderFeignController


    @GetMapping(value = "/consumer/payment/feign/timeout")
    public String getPaymentFeignTimeout(){
       return paymentFeignService.getPaymentFeignTimeout();
    }

3. postman调用

调用接口:localhost:8004/consumer/payment/feign/timeout
调用类型:GET
image.png

4. 超时控制

根据上边三步发现调用服务过长会出现超时错误。
原因是openfeign内部已经包含了ribbon组件,而该组件默认容忍接口为1秒,所以修改问题所在是:修改ribbon超时设定修改。

调用服务端cloud_learn_users_feign_8004
修改配置文件添加ribbon超时设定,整体如下:

server:
  port: 8004

spring:
  application:
    name: cloud-payment-client

eureka:
  client:
    register-with-eureka: true
    fetchRegistry: true
    service-url:
      defaultZone: http://eureka9001.com:9001/eureka,http://eureka9002.com:9002/eureka  #集群版
  instance:
    instance-id: users8004
    prefer-ip-address: true

ribbon:
  ReadTimeout: 5000
  ConnectTimeout: 5000


5. 测试超时

调用接口:localhost:8004/consumer/payment/feign/timeout
调用类型:GET
image.png

二、openfeign日志打印

1. feign日志是什么

Feign提供了日志打印功能,我们可以通过配置来调整日志级别,从而了解Feign中Http请求的细节,说白了就是对 Feign接口的调用情况进行监控和输出。

2. feign日志级别

  1. NONE:默认的,不显示任何日志;
  2. BASIC:仅记录请求方法、URL、响应状态码及执行时间;
  3. HEADERS:除了 BASIC中定义的信息之外,还有请求和响应的头信息;
  4. FULL:除了 HEADERS中定义的信息之外,还有请求和响应的正文及元数据。

3. 调用模块添加feign配置类

package org.learn.cloud.config;

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

@Configuration
public class FeignConfig {

    @Bean
    Logger.Level feignLoggerLevel(){
        return Logger.Level.FULL;
    }
}

4. 配置文件添加日志监控和级别

server:
  port: 8004

spring:
  application:
    name: cloud-payment-client

eureka:
  client:
    register-with-eureka: true
    fetchRegistry: true
    service-url:
      defaultZone: http://eureka9001.com:9001/eureka,http://eureka9002.com:9002/eureka  #集群版
  instance:
    instance-id: users8004
    prefer-ip-address: true

ribbon:
  ReadTimeout: 5000
  ConnectTimeout: 5000

logging:
  level:
    org.learn.cloud.service.PaymentFeignService: debug

5. 调用接口查看控制台

image.png

获取源码

搜索并关注公众号:雨中散步撒哈拉
回复关键词:016

Q.E.D.


只有创造,才是真正的享受,只有拚搏,才是充实的生活。