前言
类似的分布式锁框架封装,之前写过spring boot版本的,这次的quarkus版本从功能上来说没啥区别,都是以注解的方式驱动的,提供了分布式锁,以及业务key粒度的锁定。
Quarkus技术交流QQ群:871808563 spring boot版本:https://github.com/kekingcn/spring-boot-klock-starter 项目地址:https://github.com/kekingcn/quarkus-redis-klock 快速集成
1、添加依赖
代码语言:javascript复制 <dependency>
<groupId>org.github.keking</groupId>
<artifactId>quarkus-redis-klock-ext</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
2、添加配置
代码语言:javascript复制quarkus.klock=true
quarkus.klock.redis.database=12
quarkus.klock.redis.password=sasa
quarkus.klock.redis.address=redis://192.168.1.204:6379
默认情况下,klock扩展开关是关闭的,您需要使用[quarkus.klock = true]配置手动将其打开。
使用方式
代码语言:javascript复制@Singleton
public class ServiceA {
@Klock
public String hello( @KlockKey String name, @KlockKey(fieldName = "name") User user){
return "hello " name;
}
}
如上代码示例,klock分布式锁quarkus扩展以添加注解的方式驱动,@klock表示给这个方法加上了一把分布式锁,锁的名称为:(默认:全类名 方法名,通过name属性指定) 指定的业务Key。使用@KlockKey注解标注锁定的业务key,尽量将锁的力度减小同时满足业务需求。如果入参是对象,可以用fieldName指定获取对象中的某个属性值作为业务Key,如上代表使用user对象里的name属性值作为业务Key。相同的业务Key就会上锁,不同的业务key就放行