項目地址: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;
/**
* 自定義業(yè)務(wù)key
* @return
*/
String [] keys() default {};
}