项目地址:https://gitee.com/kekingcn/spring-boot-klock-starter
可以用于解决重复提交的问题,是个不错的分布式锁的实践。
依赖
//需要自己打包到私服
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-klock-starter</artifactId>
<version>1.1-SNAPSHOT</version>
</dependency>
配置
spring:
klock:
address: 127.0.0.1:6379
password: password
测试方法
/**
* 分布式锁测试
*
* @param token
* @return
*/
@NotAuth
@Klock(name = "query", leaseTime = 10000)
@GetMapping(value = "test")
public String query(@RequestParam String token) {
try {
log.info("线程进入:" + Thread.currentThread().getName());
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
return "success - " + token;
}
KLOCK
/**
* Created by kl on 2017/12/29.
* Content :加锁注解
*/
@Target(value = {ElementType.METHOD})
@Retention(value = RetentionPolicy.RUNTIME)
public @interface Klock {
/**
* 锁的名称
* @return
*/
String name() default "";
/**
* 锁类型,默认可重入锁
* @return
*/
LockType lockType() default LockType.Reentrant;
/**
* 尝试加锁,最多等待时间
* @return
*/
long waitTime() default Long.MIN_VALUE;
/**
*上锁以后xxx秒自动解锁
* @return
*/
long leaseTime() default Long.MIN_VALUE;
/**
* 自定义业务key
* @return
*/
String [] keys() default {};
}
网友评论