Home  >  Q&A  >  body text

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

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

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

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

各位大神求支招

天蓬老师天蓬老师2763 days ago487

reply all(1)I'll reply

  • 巴扎黑

    巴扎黑2017-04-18 09:51:44

    When the connection fails, acquire will immediately throw an exception. You just need to catch the exception

    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

    reply
    0
  • Cancelreply