LeaderSelectorListener listener = new LeaderSelectorListenerAdapter()
{
public void takeLeadership(CuratorFramework client) throws Exception
{
while (true) {
try {
// ... business logic
} catch (Exception e) { // catch any exeption here
// do nothing
}
}
}
}
LeaderSelector selector = new LeaderSelector(client, path, listener);
selector.autoRequeue();
selector.start();
如代码所示,我捕获了业务代码中的任何异常,因此即使zookeeper断开连接,业务代码仍将执行,对吗?
1条答案
按热度按时间ddrv8njm1#
如果zookeeper断开连接,业务代码将不会执行。
类
LeaderSelectorListenerAdapter
有一个方法stateChanged()
。当zk在
SUSPENDED
或LOST
中时,此方法将抛出一个CancelLeadershipException
,使客户端退出并重新排队等待领导。所以别担心