java分布式锁
这几天遇到了一个非常好玩的东西,在系统中写了一个消息队列。
当消息队列启动时会不定期的有数据进入。由消息队列执行一些同步,验证等操作。
后来发现一个问题。如果分布式部署代码,那么就会出现问题。
分布了两台或者多台机器的时候队列也跟着变多了。但是实际上这是一个队列。
由此,衍生了下面的分布式锁的代码:
CuratorProperties curatorProperties = CuratorPropertiesBuilder.getInstance().build(new LocalZookeeperPropertiesLoader().load()); try (CuratorFramework curatorFramework = CRMSCuratorFrameworkFactory.createCuratorFramework(curatorProperties)) { //互斥分布式锁 String lockName = MEMBER_ON_ZOOKEEPER_PREFIX + importHistory.getImportBatch(); InterProcessMutex mutexLock = new InterProcessMutex(curatorFramework, lockName); if (mutexLock.acquire(-1, null)) { try { 锁住的代码。。。。。 }catch (Exception ex) { LOGGER.error("错误:", ex); } finally { mutexLock.release(); } } } catch (Exception ex) { LOGGER.error("错误:", ex); }
浙公网安备 33010602011771号