public ZookeeperIDGenerator(string Connstring, int SessionTimeout = -1) { var watcher = new SingleWatcher(); //初始化客户端 _client = new ZooKeeper(Connstring, SessionTimeout, watcher, false); //初始化root节点 }
public ZookeeperClient(string Connstring, int SessionTimeout = -1) { var watcher = new SingleWatcher(); Watcher = watcher; Watcher.RunProcess = new Action <WatchedEvent>((e) => { if (e.getState() == org.apache.zookeeper.Watcher.Event.KeeperState.Disconnected) { lock (_lockerList) { foreach (var item in _lockerList) { item.ZooEvent = WatcherResult.Disconnected; item.Event.Set(); } _lockerList.Clear(); } } else if (e.get_Type() == org.apache.zookeeper.Watcher.Event.EventType.NodeDeleted) { var path = e.getPath(); lock (_lockerList) { var node = _lockerList.FirstOrDefault(w => $"/locks/{w.Name}" == path); if (!string.IsNullOrWhiteSpace(node.Name)) { node.ZooEvent = WatcherResult.UnLocked; node.Event?.Set(); _lockerList.Remove(node); } } } }); //初始化客户端 _client = new ZooKeeper(Connstring, SessionTimeout, watcher, false); //初始化root节点 }