Spring分布式锁

1.redis

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-integration</artifactId>
</dependency>
<dependency>
  <groupId>org.springframework.integration</groupId>
  <artifactId>spring-integration-redis</artifactId>
</dependency>
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

2.zookeeper

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-integration</artifactId>
</dependency>
<dependency>
            <groupId>org.springframework.integration</groupId>
            <artifactId>spring-integration-zookeeper</artifactId>
            <version>5.0.4.RELEASE</version>
        </dependency>

3.配置类

//分布式锁
@Configuration
public class RedisLockConfiguration {
    @Bean
    public RedisLockRegistry redisLockRegistry(RedisConnectionFactory redisConnectionFactory) {
        return new RedisLockRegistry(redisConnectionFactory, "ucp-multi-accept");
    }
}

4.使用

Lock lock2 = redisLockRegistry.obtain("TaskThread-lock-60");//分布式锁  获取锁
                    try{
                        boolean b1 = lock2.tryLock(3, TimeUnit.SECONDS);//尝试加锁  如果加锁失败则跳过
                        if (!b1){
                            return;
                        }
                       // do sth
                    }catch (Exception ex){
                        log.error("TaskThread-lock-60",ex);
                    }finally {
                        lock2.unlock();
                    }

5.方法说明

 

posted @ 2022-06-22 11:09  DreamCatt  阅读(452)  评论(0)    收藏  举报