zookeeper curator 分布式锁,zk服务停了,如何保证业务逻辑的正常处理

zookeeper curator 分布式锁,zk服务停了,如何保证业务逻辑的正常处理

InterProcessMutex lock = new InterProcessMutex(client, path);
if (lock.acquire(10 * 1000, TimeUnit.SECONDS)) {
doSth();
}

如果zk连接失败,如何跳过锁判断,执行下面的业务逻辑,不至于业务瘫痪呢

各位大神求支招

阅读 3.6k
1 个回答

当连接失败的时候,acquire会马上抛出异常的,你只要把异常catch住就好

public boolean acquire(long time,
                       TimeUnit unit)
                throws Exception
                
Acquire the mutex - blocks until it's available or the given time expires. Note: the same thread can call acquire re-entrantly. Each call to acquire that returns true must be balanced by a call to release()

Specified by:
acquire in interface InterProcessLock

Parameters:
time - time to wait
unit - time unit

Returns:
true if the mutex was acquired, false if not

Throws:
Exception - ZK errors, connection interruptions
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题