0
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 断开连接,业务代码仍然会执行,对吧?

4

1 回答 1

0

如果 zookeeper 断开连接,业务代码将不会执行。

LeaderSelectorListenerAdapter有一个方法stateChanged()

CancelLeadershipException当 zk 在SUSPENDEDor中时,此方法将抛出 a ,这使客户端退出并重新排队等待领导LOST

所以,别担心。

于 2022-02-16T07:54:53.387 回答