/// <summary> /// 构造函数 /// </summary> /// <param name="connectionString">Zookeeper连接字符串</param> /// <param name="loggerFactory">日志工厂</param> /// <param name="serviceProxyCreator">服务代理构造器</param> /// <param name="nodeClientManager">NodeClient管理器</param> public ServiceSubscriber(string connectionString, ILoggerFactory loggerFactory, IServiceProxyCreator serviceProxyCreator, INodeClientManager nodeClientManager) : this(new ZookeeperConfig() { ConnectionString = connectionString }, loggerFactory, serviceProxyCreator, nodeClientManager) { }
/// <summary> /// 构造函数 /// </summary> /// <param name="zookeeperConfig">Zookeeper配置</param> /// <param name="loggerFactory">日志工厂</param> /// <param name="serviceProxyCreator">服务代理构造器</param> /// <param name="nodeClientManager">NodeClient管理器</param> public ServiceSubscriber(ZookeeperConfig zookeeperConfig, ILoggerFactory loggerFactory, IServiceProxyCreator serviceProxyCreator, INodeClientManager nodeClientManager) { BasePath = zookeeperConfig.BasePath; logger = loggerFactory.CreateLogger <ServiceSubscriber>(); this.serviceProxyCreator = serviceProxyCreator; this.nodeClientManager = nodeClientManager; ZooKeeper.LogLevel = System.Diagnostics.TraceLevel.Error; try { client = new ZookeeperClient(new ZookeeperClientOptions() { ConnectionString = zookeeperConfig.ConnectionString, ConnectionTimeout = zookeeperConfig.ConnectionTimeout, OperatingTimeout = zookeeperConfig.OperatingTimeout, EnableEphemeralNodeRestore = true, ReadOnly = zookeeperConfig.ReadOnly, SessionId = zookeeperConfig.SessionId, SessionPasswd = zookeeperConfig.SessionPasswd, SessionTimeout = zookeeperConfig.SessionTimeout }); } catch (Exception ex) { logger.LogError(ex, $"Connect zookeeper failed. ConnectionString={zookeeperConfig.ConnectionString}"); throw ex; } logger.LogDebug($"Connect zookeeper success. ConnectionString={zookeeperConfig.ConnectionString}"); }