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

1. 问题现象:

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

2. 问题排查:

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

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

3. 解决方案:

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

    doFinally:无论是否成功或者取消都会运行
    doOnCancel:请求取消则会执行
相关推荐
空中湖31 分钟前
Spring AI RAG 完整实战:从零搭建企业知识库问答系统
java·人工智能·spring
Ai拆代码的曹操43 分钟前
K8s Pod Pending 逐层排查:从 FailedScheduling 到 PVC StorageClass 不存在的实战记录
java·linux·kubernetes
什巳1 小时前
JAVA练习306- 翻转二叉树
java·数据结构·算法·leetcode
wangbing11252 小时前
JPA下自定义主键
java·linux·服务器
豆瓣鸡2 小时前
XXL-JOB 定时任务——从 Docker 部署到分片广播,分布式任务调度落地
spring boot·分布式·docker·定时任务
plainGeekDev3 小时前
NullPointerException → Kotlin 空安全
android·java·kotlin
想做小南娘,发现自己是女生喵4 小时前
第 2 章 顺序表和 vector
java·数据结构·算法
CHANG_THE_WORLD4 小时前
6.多线程的TCP通信
java·网络·tcp/ip
宠友信息4 小时前
MySQL复合索引与Druid优化仿小红书源码个人主页查询链路
数据库·spring boot·websocket·mysql·uni-app
sun03225 小时前
【笔记】Spring MVC 相关介绍
java·spring·mvc