解决SpringCloudGateway用户请求超时导致日志未记录情况

1. 问题现象:

本项目是SpringCloudGateway框架项目,测试对接时发现一种情况:调用方请求了我项目的接口,但是经过3秒之后调用方未收到任何请求,我项目也未记录到任何日志。

2. 问题排查:

分析发现,我方的接口请求了其他接口并且超时,超时时长为10秒;而调用方请求时长为3秒;所以当我方接口请求未结束时,调用方就已经请求超时了。

而根据SpringCloudGateway的底层逻辑,调用方请求超时,请求链路会收到一个cancel指令,会导致后续的Filter的then()不会往后执行,而我的日志记录操作正是放在Filter的then()中;

3. 解决方案:

  1. 调用方接口超时时长应大于我方超时时长
  2. 日志记录等不论调用是否取消的逻辑都应该放在doFinally中

    doFinally:无论是否成功或者取消都会运行
    doOnCancel:请求取消则会执行
相关推荐
前端技术2 小时前
华为余承东:鸿蒙终端设备数突破5500万
java·前端·javascript·人工智能·python·华为·harmonyos
Adellle2 小时前
Java 异步回调
java·开发语言·多线程
SamDeepThinking2 小时前
如何理解 Spring 当中的 Bean?
java·后端·面试
MY_TEUCK2 小时前
【MY_TRUCK中间件实战】Redis 入门教程:从基础命令到 Spring Boot 实战
spring boot·redis·中间件
敖正炀2 小时前
阻塞队列-0-3-最佳实践
java
kevinzeng2 小时前
Java Stream 流式编程 10天系统学习计划
java
摇滚侠2 小时前
Java 零基础全套视频教程,面向对象(进阶),笔记 90-103
java·开发语言·笔记
椰羊~王小美2 小时前
C、Java、Go、Python 对比
java·c语言
Gerardisite2 小时前
企业微信自动化开发新思路: RPA 接入方案
java·python·自动化·企业微信·rpa