您现在的位置是:首页 > 文章详情

苞米豆-lock4j 2.1.0 重磅更新,多种分布式锁同时支持

日期:2020-12-15点击:1308

简介

lock4j-spring-boot-starter是一个分布式锁组件,其提供了多种不同的支持以满足不同性能和环境的需求。

立志打造一个简单但富有内涵的分布式锁组件。

2.1.0

  • feat: 新增Lock4jProperties支持全局配置锁过期、获取锁超时时间、默认锁执行器等
  • update: 修改Lock4j注解里的lockClient参数名为executor
  • update: 新增锁执行器支持自定义扩展,支持方法级别配置executor
  • update: 修改锁执行器为单例
  • remove: 移除Lock4j注解里的lockType参数
  • remove: 移除Lock4j注解里的keyBuilder参数(扩展keyBuilder需要自行实现LockKeyBuilder接口并声明为spring bean)
  • fix: 修复lockExecutor没有引入相关class的情况下抛class no found
  • feat: 新增不指定executor前提下,默认优先级redisson>redisTemplate>zookeeper
  • remove: 移除Lock4j注解里的LockFailureStrategy参数(自定义lock失败处理需要自行实现LockFailureStrategy接口并声明为spring bean)
  • feat: 支持声明式@Lock4j、编程式@Autowired LockTemplate

特性

  1. 简单易用,功能强大,扩展性强。
  2. 支持redission,redisTemplate,zookeeper。可混用,支持扩展。

如何使用

  1. 引入相关依赖。
 <dependency> <groupId>com.baomidou</groupId> <artifactId>lock4j-spring-boot-starter</artifactId> <version>${version}</version> </dependency> <!--若使用redisTemplate作为分布式锁底层,则需要引入--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> <!--若使用redisson作为分布式锁底层,则需要引入--> <dependency> <groupId>org.redisson</groupId> <artifactId>redisson-spring-boot-starter</artifactId> <version>3.13.6</version> </dependency> <!--若使用zookeeper作为分布式锁底层,则需要引入--> <dependency> <groupId>org.apache.curator</groupId> <artifactId>curator-recipes</artifactId> <version>5.1.0</version> </dependency>
  1. 根据底层需要配置redis或zookeeper。
 spring: redis: host: 127.0.0.1 ... coordinate: zookeeper: zkServers: 127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183
  1. 在需要分布式的地方使用Lock4j注解。
 @Service public class DemoService { //默认获取锁超时3秒,30秒锁过期 @Lock4j public void simple() { //do something } //完全配置,支持spel @Lock4j(keys = {"#user.id", "#user.name"}, expire = 60000, acquireTimeout = 1000) public User customMethod(User user) { return user; } }

高级使用

  1. 配置全局默认的获取锁超时时间和锁过期时间。
 lock4j: acquire-timeout: 3000 #默认值3s,可不设置 expire: 30000 #默认值30s,可不设置 primary-executor: com.baomidou.lock.executor.RedisTemplateLockExecutor #默认redisson>redisTemplate>zookeeper,可不设置
  1. 自定义执行器。
 @Service public class DemoService { //可在方法级指定使用某种执行器,若自己实现的需要提前注入到Spring。 @Lock4j(executor = RedissonLockExecutor.class) public Boolean test() { return "true"; } }
  1. 自定义锁key生成器。

默认的锁key生成器为 com.baomidou.lock.DefaultLockKeyBuilder 。

 @Component public class MyLockKeyBuilder extends DefaultLockKeyBuilder { @Override protected String getKeyPrefix() { return "myKey"; //默认是lock4j开头 } }
  1. 自定义锁获取失败策略。

默认的锁获取失败策略为 com.baomidou.lock.DefaultLockFailureStrategy 。

 @Component public class MyLockFailureStrategy implements LockFailureStrategy { @Override public void onLockFailure(String key, long acquireTimeout, int acquireCount) { // write my code } }
原文链接:https://www.oschina.net/news/123475
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章