/// <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}"); }
/// <summary> /// 获取Zookeeper配置 /// </summary> /// <param name="config">配置对象</param> /// <returns></returns> public static ZookeeperConfig GetZookeeperConfig(this IConfiguration config) { var zookepperConfig = new ZookeeperConfig(); config .GetSection("xnode:zookeeper") .Bind(zookepperConfig); return(zookepperConfig); }