前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >guavacache+ 自定义注解+aop 防止重复提交

guavacache+ 自定义注解+aop 防止重复提交

作者头像
分享干货的你
发布2021-04-06 17:00:51
8430
发布2021-04-06 17:00:51
举报
文章被收录于专栏:分享干货的你

最近发现一个问题,前段在掉接口的时候。有的接口响应比较慢,客户以为没有反应,发送了多次请求。最后导致请求大量积压。都是重复请求。

没有体现幂等性。这里使用自定义注解加上guacache 的过期自动消失+aop 切片 来实现防止重复提交。

首先写一个自定义的注解。

什么参数都没有。

在写一个guavacache 的工具类

这里指定并级别。和自动过期时间。这里我们默认过期是三秒。

在写一个aop

这里使用了环绕通知和后置通知。

先从request 里面获取请求的sessionid和url.,作为唯一的key.

环绕通知里面的逻辑。

第一次先判断有没有get(key),没有在put

guavacache put key, value 是false. 先用threadloacl set进去 key。在下面的后置处理器在获取。

后置处理器after 里面的逻辑。在cachekey 把key 变成"" 变回初始化状

先把threadlocal remove 了。防止内存泄漏。后置处理器的逻辑只有当环绕通知结束以后,才执行。当环绕通知还没结束,另外一个请求进来的时候。

这个时候就弹出请不要重复提交。

这里我们先写一个接口测试一下。

先测试正常情况

就是响应比较快

15毫秒

我们把他睡三秒

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-08-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 分享干货的你 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档