• 135370

    文章

  • 827

    评论

  • 13

    友链

  • 最近新加了换肤功能,大家多来逛逛吧~~~~
  • 喜欢这个网站的朋友可以加一下QQ群,我们一起交流技术。

redis-auto-idempotent-spring-boot-starter 一个高并发下接口幂等性处理的自定义starter

2年想跳槽阿里,大咖揭秘大厂面试的那些事儿 >>

网上已经有很多基于redis + token实现的幂等性接口的实现案例,但是集成到项目中比较繁琐,并不是很易用, 所以在已有轮子的基础之上,封装了一个基于spring data redis的高并发下的接口幂等性处理的自定义starter, 此自定义的starter实现原理参考此文 springboot+redis+Interceptor+自定义annotation实现接口自动幂等

我的具体实现可以浏览我的码云bwstudio-common

幂等处理的流程图与原来的轮子相同,就直接引入了 avatar

redis-auto-idempotent-spring-boot-starter的使用及其简单 只需要引入依赖,在配置文件中设置开启两个参数即可,如果启用成功,会在启动中看到下列输出:

avatar

redis-auto-idempotent-spring-boot-starter使用说明

  1. 在你的项目中引入依赖
        <dependency>
            <groupId>com.bwstudio.common</groupId>
            <artifactId>redis-auto-idempotent-spring-boot-starter</artifactId>
            <version>0.0.1</version>
        </dependency>

  1. 在spring boot项目的配置文件中加入一下两个配置, 比如application.properties中(yml文件请自行转换)

开启自动幂等性处理拦截器

redis-auto-idempotent.enabled=false

设置幂等性token的自动过期时间,单位:毫秒

redis-auto-idempotent.token-expire-time-in-ms=30000

  1. 在控制器方法上加上@AutoIdempotent, 比如
@RestController
public class TestIdempotenceController {

    @AutoIdempotent
    @PostMapping("/test")
    public String testIdempotence() {
        return "Hello World";
    }
}

  1. 启动demo

首先获取幂等性token,引入redis-auto-idempotent-spring-boot-starter会随你的项目自动启动一个控制器来提供获取幂等性token的api

GET localhost:8080/auto-idempotent/token

这时会你的spring项目连接的redis服务器中生成一个前缀为'autoidempotent_'的为幂等性请求服务的token,例如:

autoidempotent_B543E217C8014F8EAA109686D7903040

携带此token在demo的post请求头或请求体中设置参数 IDEMPOTENT_TOKEN 的值为上面的值

发起post请求到test测试效果

POST localhost:8080/test

第一次携带幂等性token发起请求会成功返回

'Hello world'

继续重复发起请求会提示

'请求失败, 重复的提交'


695856371Web网页设计师②群 | 喜欢本站的朋友可以收藏本站,或者加入我们大家一起来交流技术!

1条评论

Loading...


发表评论

电子邮件地址不会被公开。 必填项已用*标注

自定义皮肤 主体内容背景
打开支付宝扫码付款购买视频教程
遇到问题联系客服QQ:419400980
注册梁钟霖个人博客