/// <summary>
 /// 创建ZkElectionClient的一个新实例
 /// </summary>
 /// <param name="connectionString"></param>
 /// <param name="sessionTimeout"></param>
 /// <param name="zkElectionClientWatcher"></param>
 public ZkElectionClient(string connectionString, int sessionTimeout, ZkElectionClientWatcher zkElectionClientWatcher)
 {
     _zkConnectionString = connectionString;
     _sessionTimeout     = sessionTimeout;
     _zkClientWatcher    = zkElectionClientWatcher;
     Connect();
 }
Ejemplo n.º 2
0
        /// <summary>
        /// 注册到Leader选举
        /// </summary>
        /// <param name="serviceName"></param>
        /// <param name="serviceId"></param>
        /// <param name="options"></param>
        public void Register(string serviceName, string serviceId, LeaderElectionOptions options)
        {
            _options = (ZkElectionOptions)options;

            var watcher = new ZkElectionClientWatcher(ProcessZkConnectEvent);

            _zkElectionClient = new ZkElectionClient(_options.ConnectionString, _options.SessionTimeout, watcher);

            _leaderOfflineConfirmInterval = _options.LeaderOfflineConfirmInterval;
            _electionRootPath             = string.Format("/leader-election/{0}", serviceName);
            _electionFlag             = string.Concat(new string[] { _electionRootPath, "/", "flag" });
            _electionLeader           = string.Concat(new string[] { _electionRootPath, "/", "leader" });
            _serviceId                = serviceId;
            _electionDataChangedEvent = new AutoResetEvent(false);
            CreateElectionRootPath(_electionRootPath);
        }