使用Netflix的包 curator-recipes

pom文件引入相关依赖
        <dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.6.3</version>
</dependency> <dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-framework</artifactId>
<version>5.2.0</version>
<exclusions>
<exclusion>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
</exclusion>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</exclusion>
</exclusions>
</dependency> <dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-recipes</artifactId>
<version>5.2.0</version>
<exclusions>
<exclusion>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
</exclusion>
</exclusions>
</dependency>
使用范例:
import org.apache.curator.RetryPolicy;
import org.apache.curator.framework.CuratorFramework;
import org.apache.curator.framework.CuratorFrameworkFactory;
import org.apache.curator.framework.recipes.locks.InterProcessMutex;
import org.apache.curator.retry.ExponentialBackoffRetry; ...... private static final String SIT_ZK_IP_PORT = "10.82.232.9xx:2181,10.82.232.9xx:2181,10.82.2329xx68:2181"; public static void main(String[] args) throws Exception { //创建zookeeper客户端连接
//重试策略, 参数1:等待时间, 参数2:重试次数
RetryPolicy policy = new ExponentialBackoffRetry(2000, 3);
final String ZK_IP_PORT = SIT_ZK_IP_PORT;
CuratorFramework client = CuratorFrameworkFactory.builder().connectString(ZK_IP_PORT).retryPolicy(policy).build();
client.start();
final InterProcessMutex mutex = new InterProcessMutex(client, "/fruit-history-package-lock"); long startTime = 0L;
try {
System.out.println("==== 开始抢锁.... ");
mutex.acquire();
startTime = System.currentTimeMillis();
System.out.println("==== 抢到锁, 开始执行.... ");
// 自己的搬砖逻辑
doXX();
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException("执行抛异常,请检查", e);
} finally {
try {
mutex.release();
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("==== 执行完毕, 释放锁....耗时: " + (System.currentTimeMillis() - startTime)/1000 + "秒");
}
}
会在zk上创建临时节点 fruit-history-package-lock, 并在该节点下创建顺序临时节点用于锁机制的排队

最新文章

  1. Mysql 索引实现原理. 聚集索引, 非聚集索引
  2. Leetcode: Line Reflection
  3. IOS 关于开发的APP跳转第三方应用的心得
  4. 繁华模拟赛 Evensgn玩序列
  5. mac 显示隐藏文件夹
  6. Oracle 中的 TO_DATE 和 TO_CHAR 函数
  7. 【LeetCode】231 - Power of Two
  8. 注册flash.ocx inno setup (转)
  9. windows下Eclipse安装Perl插件教程
  10. 单点登录SSO原则的实现
  11. 使用MBROSTool 工具制作U盘多启动盘的方法总结
  12. Java字符串中常用字符占用字节数
  13. windows每天备份文件的bat脚本【原创】
  14. MSDE2008安装备忘
  15. json jmespath的使用
  16. JavaScript中的Generator函数
  17. 046、创建Docker Machine(2019-03-11 周一)
  18. 安装rlwrap 的简单方法
  19. 2018.10.26 NOIP模拟 瓶子 (dp/贪心)
  20. idea 映射文件同class文件一起打包安装

热门文章

  1. 从位图到布隆过滤器,C#实现
  2. 分享|智慧环保-生态文明信息化解决方案(附PDF)
  3. C++ 练气期之一文看懂字符串
  4. 【炼丹Trick】EMA的原理与实现
  5. IP核的使用(Vivado中的调用,product guide的查询阅读 ,引脚的设置(位宽,个数,算法等),coe文件的初始化 )
  6. CF1703E Mirror Grid 题解
  7. display: table-cell里面文字打点的方法
  8. Arraylist集合的概述和基本使用与常用方法
  9. Random的概述和基本使用与生成指定范围的随机数
  10. fiddler抓包手机请求(转)