分布式锁(待重构)
小于 1 分钟约 288 字
分布式锁(待重构)
GAV 坐标
Gradle
implementation(commonLibs.blade.lock.spring.boot.starter)Maven
<dependency>
<groupId>team.aikero.blade</groupId>
<artifactId>blade-lock-spring-boot-starter</artifactId>
</dependency>@DistributedLock
- 基于aop和RedissonLock实现、lock key 支持SpEL表达式的分式锁注解。
// 自定义等待时间,提示语
@DistributedLock(key = "createOrder", waitTime = 10, timeUnit = TimeUnit.SECONDS, message = "订单创建中,请稍后重试")
// 拼接参数字段
@DistributedLock(key = "createOrder", keyParts = "#p.id")
// 拼接当前用户id
@DistributedLock(key = "createOrder", keyParts = {"#currentUserId"})
// 拼接当前用户id
@DistributedLock(key = "createOrder", keyParts = {"#tenantId"})
public void createOrder(Params p) {
}@NoRepeatSubmit
- 基于aop和Reids setnx命令实现、lock key 支持SpEL表达式的防止重复提交注解。
// 自定义过期时间,提示语
@NoRepeatSubmit(key = "createOrder", expireTime = 10, timeUnit = TimeUnit.SECONDS, message = "订单创建中,请稍后重试")
// 拼接参数字段
@NoRepeatSubmit(key = "createOrder", keyParts = "#p.id")
// 拼接当前用户id
@NoRepeatSubmit(key = "createOrder", keyParts = {"#currentUserId"})
// 拼接当前用户id
@NoRepeatSubmit(key = "createOrder", keyParts = {"#tenantId"})
public void createOrder(Params p) {
}LockComponent
- 在方法内部加锁可以使用LockComponent。
String result = lockComponent.lock("key", 10, TimeUnit.SECONDS,
() -> {
// do
return "result";
});
String result = lockComponent.submitLock("key", 10,
() -> {
// do
return "result";
},
"正在处理中.....");