注意:
3.4一下的版本和3.4以上版本
3.4依赖:
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-recipes</artifactId>
<version>2.12.0</version>
</dependency>
3.4以上
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-recipes</artifactId>
<version>4.2.0</version>
</dependency>
代码:
配置:
package com.chenyou.admin.config;
import lombok.Data;
import org.apache.curator.framework.CuratorFramework;
import org.apache.curator.framework.CuratorFrameworkFactory;
import org.apache.curator.retry.ExponentialBackoffRetry;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.stereotype.Component;
@Configuration
@ConfigurationProperties(prefix = "curator")
@Data
@Component
public class CuratorConfig {
private int retryCount=3;
private int elapsedTimeMs=5000;
private String connectString="192.168.1.115:2181";
private int sessionTimeoutMs=6000;
private int connectionTimeoutMs=5000;
@Bean(initMethod = "start")
public CuratorFramework curatorFramework() {
org.apache.curator.RetryPolicy retryPolicy = new ExponentialBackoffRetry(elapsedTimeMs, retryCount);
CuratorFramework curatorFramework = CuratorFrameworkFactory.builder()
.connectString(connectString)
.sessionTimeoutMs(sessionTimeoutMs)
.retryPolicy(retryPolicy)
.build();
return curatorFramework;
}
}
调用:
@Autowired
private CuratorFramework curatorFramework;
String LOCK_PATH="/userLock/id"+sysUser.getUid();
InterProcessMutex lock = new InterProcessMutex(curatorFramework,LOCK_PATH);
try {
if(lock.acquire(1, TimeUnit.SECONDS)){
//业务
}
}catch (Exception e){
e.printStackTrace();
}finally {
try {
lock.release();//释放锁
}catch (Exception e){
e.printStackTrace();
}
}
参考文档: http://curator.apache.org/getting-started.html(apache官方)