SpringCloud Gateway 构建全局缓存 Request 解决 body 不可重复读问题
增加全局缓存Request过滤器
/*** 全局缓存获取body请求数据(解决流不能重复读取问题)** @author Lion Li*/
@Component
public class GlobalCacheRequestFilter implements GlobalFilter, Ordered {@Overridepublic Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {// 只缓存json类型请求String header = exchange.getRequest().getHeaders().getFirst(HttpHeaders.CONTENT_TYPE);boolean flag = StringUtils.startsWithIgnoreCase(header, MediaType.APPLICATION_JSON_VALUE);// 不是json放行if (!flag) {return chain.filter(exchange);}// 使用 Gateway 自带工具 构建缓存bodyreturn ServerWebExchangeUtils.cacheRequestBody(exchange, (serverHttpRequest) -> {if (serverHttpRequest == exchange.getRequest()) {return chain.filter(exchange);}return chain.filter(exchange.mutate().request(serverHttpRequest).build());});}@Overridepublic int getOrder() {return Ordered.HIGHEST_PRECEDENCE;}
}
SpringCloud Gateway 构建全局缓存 Request 解决 body 不可重复读问题相关推荐
- mysql可重复读和间隙锁_解决MySQL可重复读——详解间隙锁
间隙锁(Gap Lock)是Innodb在可重复读提交下为了解决幻读问题时引入的锁机制,(下面的所有案例没有特意强调都使用可重复读隔离级别)幻读的问题存在是因为新增或者更新操作,这时如果进行范围查询的 ...
- java -- 解决InputStream不可重复读的问题
作者:opLW 目录 1.InputStream不可重复度 2.解决办法 3.最终方案 1.InputStream不可重复度 问题 最近在使用如下代码解析从网上读取的图片字节流时,遇到一个问题:SkI ...
- 【springcloud gateway诡异间歇性500异常解决】500 Server Error,ConcurrentModificationException: null
最近在搭建一个新的网关时,发布页面访问或者postman访问,会间歇性,500异常,折腾了很长的时间,搜了国内国外各种网站,都没有具体的解决方案. 经过2,3天的 关注和分析定位,最终解决,mark一 ...
- SpringCloud Gateway 增加了context-path 404解决办法
1.nginx 代理了后端网关地址时配置了 /api 如下: location /api { proxy_pass http://127.0.0.1:21212; } ...
- SpringCloud-Gateway自定义过滤器,解决body流不能重复读的问题
网上的代码千奇百怪,这个是我测试后整理的. 当前端请求不含body时,也能兼容. 1.读取body流进行缓存 /*** 获取body请求数据(解决流不能重复读取问题)* 这个过滤器的order设置的是 ...
- mysql脏读解决方案_MySQL为什么可以解决脏读和不可重复读?
一般是通过锁机制,解决掉不可重复读和幻读的问题.是不是可以通过乐观锁的问题去解决不可重复读和幻读的问题,MySQL 采用的是 MVCC 机制来解决脏读.不可重复读的问题. MVCC 英文全称是 Mui ...
- 可重复读隔离级别如何解决脏读、不可重复读
我们都知道可重复读隔离级别可以解决脏读.不可重复读.那么具体是如何解决的呢? 下面先通过实验来演示可重复读能够解决脏读.不可重复读问题,然后解释具体的原因. 环境搭建 1. 建立两个session连接 ...
- 可重复读解决了什么问题?
可重复读的核心就是一致性读:保证多次读取同一个数据时,其值都和事务开始的时候的内容是一致的,禁止读取到别的事务未提交的数据,会造成幻读. 事务更新数据的时候,只能用当前读,如果当前的记录的行锁被其他事 ...
- MySQL MVCC多版本并发控制(脏读和不可重复读解决原理)
文章目录 一.MVCC概念 二.MVCC应用于已提交读隔离级别 1. 解决脏读 2. 无法解决不可重复读 3. 无法解决幻读 三.MVCC应用于可重复读隔离级别 1. 解决脏读 2. 解决不可重复读 ...
最新文章
- java 泛型 父子,Java泛型-mb601cf8a78cc07的博客-51CTO博客
- OpenCV中Mat属性step,step1,elemSize,elemSize1
- Steps to developing Metro style apps 第一章-Creat a UI(2)(4)
- Tensorflow(一) 基础命令
- HDUOJ---1879 继续畅通工程
- 一看就会一做就废系列:说说 RECOVER UNTIL CANCEL
- eclipse 离线安装python开发工具 PyDev
- dax和m的区别_Power BI中的两种语言:M函数和DAX函数
- part-1 输入偏置电流和输入失调电流
- 什么是归纳法、数学归纳法
- Unity中打开文件窗口(OpenFileDialog)的几种方法对比
- 简单解读拼多多t.gif、tne.gif接口
- 白盒测试方法的简单理解(通俗易懂)
- [转]一往无前 | 小米十周年,雷军公开演讲全文
- Vulkan学习(八): Hello Triangle 重构
- Горький изучить головка.Eligendi culpa cupiditate libero quae.
- 用python画佩奇_使用python画个小猪佩奇的示例代码
- moviepy音视频开发:音频文件存取类AudioFileClip属性和方法介绍
- TCP/IP协议栈在Linux内核中的运行时序分析
- SQL 创建数据库,创建表