/// <summary>
        /// ZooKeeper事件处理
        /// </summary>
        /// <param name="watchedEvent">ZooKeeper事件</param>
        public void Process(WatchedEvent watchedEvent)
        {
            try
            {
                //结点更新时
                if (watchedEvent.Type == EventType.NodeDataChanged)
                {
                    CallBack();
                }

                //结点断开连接,这时不要进行处理
                if (watchedEvent.State == KeeperState.Disconnected)
                {
                    //todo log
                }

                //session expired,需要重新关注哦
                if (watchedEvent.State == KeeperState.Expired)
                {
                    _zooKeeperClient.ReConnect();
                    CallBack();
                }
                LogManager.GetLogger().Info(string.Format("DisconfClient.NodeWatcher,WatchedEvent:{0}", watchedEvent));
            }
            catch (Exception ex)
            {
                LogManager.GetLogger().Info(string.Format("DisconfClient.NodeWatcher,WatchedEvent:{0},Exception:{1}", watchedEvent, ex));
            }
        }
Exemple #2
0
        public static void ReConnect()
        {
            if (_client == null)
            {
                return;
            }

            lock (SyncRoot)
            {
                _client.ReConnect();
            }
        }