基于redis的Quarkus分布式锁框架扩展开源了(21)

2023-11-18 13:18:11 浏览数 (3)

前言

类似的分布式锁框架封装,之前写过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就放行

0 人点赞