public NacosConfigurationProvider(NacosConfigurationSource configurationSource)
        {
            _configurationSource = configurationSource;

            _parser = configurationSource.NacosConfigurationParser ?? JsonConfigurationStringParser.Instance;

            _client = new NacosMsConfigClient(NullLoggerFactory.Instance, new NacosOptions
            {
                ServerAddresses = configurationSource.ServerAddresses,
                Namespace       = configurationSource.Tenant,
                AccessKey       = configurationSource.AccessKey,
                ClusterName     = configurationSource.ClusterName,
                ContextPath     = configurationSource.ContextPath,
                EndPoint        = configurationSource.EndPoint,
                DefaultTimeOut  = configurationSource.DefaultTimeOut,
                SecretKey       = configurationSource.SecretKey,
                Password        = configurationSource.Password,
                UserName        = configurationSource.UserName,
                ListenInterval  = 5000
            });

            _client.AddListenerAsync(new AddListenerRequest
            {
                DataId    = _configurationSource.DataId,
                Group     = _configurationSource.Group,
                Tenant    = _configurationSource.Tenant,
                Callbacks = new System.Collections.Generic.List <Action <string> >
                {
                    x => CallBackReload(x)
                }
            });
        }
        public NacosConfigurationProvider(NacosConfigurationSource configurationSource)
        {
            _configurationSource = configurationSource;

            _parser = configurationSource.NacosConfigurationParser;

            _client = new NacosMsConfigClient(NullLoggerFactory.Instance, new NacosOptions
            {
                ServerAddresses = configurationSource.ServerAddresses,
                Namespace       = configurationSource.Tenant,
                AccessKey       = configurationSource.AccessKey,
                ClusterName     = configurationSource.ClusterName,
                ContextPath     = configurationSource.ContextPath,
                EndPoint        = configurationSource.EndPoint,
                DefaultTimeOut  = configurationSource.DefaultTimeOut,
                SecretKey       = configurationSource.SecretKey,
                Password        = configurationSource.Password,
                UserName        = configurationSource.UserName,
                ListenInterval  = 20000
            });

            if (configurationSource.Listeners != null && configurationSource.Listeners.Any())
            {
                var tasks = new List <Task>();

                foreach (var item in configurationSource.Listeners)
                {
                    tasks.Add(_client.AddListenerAsync(new AddListenerRequest
                    {
                        DataId    = item.DataId,
                        Group     = item.Group,
                        Tenant    = configurationSource.Tenant,
                        Callbacks = new System.Collections.Generic.List <Action <string> >
                        {
                            x => CallBackReload(x, item.Optional)
                        }
                    }));
                }

                Task.WhenAll(tasks).ConfigureAwait(false);
            }
            else
            {
                _client.AddListenerAsync(new AddListenerRequest
                {
#pragma warning disable CS0618
                    DataId    = _configurationSource.DataId,
                    Group     = _configurationSource.Group,
                    Tenant    = _configurationSource.Tenant,
                    Callbacks = new System.Collections.Generic.List <Action <string> >
                    {
                        x => CallBackReload(x, _configurationSource.Optional)
                    }
#pragma warning restore CS0618
                });
            }
        }
        public NacosConfigurationProvider(NacosConfigurationSource configurationSource)
        {
            _configurationSource = configurationSource;

            _parser = configurationSource.NacosConfigurationParser ?? new JsonConfigurationParser();

            _configurationSource.NacosConfigClient.AddListenerAsync(new AddListenerRequest
            {
                DataId    = _configurationSource.DataId,
                Group     = _configurationSource.Group,
                Tenant    = _configurationSource.Tenant,
                Callbacks = new System.Collections.Generic.List <Action <string> >
                {
                    x => CallBackReload(x)
                }
            });
        }
        public NacosConfigurationProvider(NacosConfigurationSource configurationSource)
        {
            _configurationSource = configurationSource;

            _parser = configurationSource.NacosConfigurationParser ?? JsonConfigurationStringParser.Instance;

            _client = new NacosMsConfigClient(NullLoggerFactory.Instance, new NacosOptions
            {
                ServerAddresses = configurationSource.ServerAddresses,
                Namespace       = configurationSource.Tenant,
                ListenInterval  = 5000
            });

            _client.AddListenerAsync(new AddListenerRequest
            {
                DataId    = _configurationSource.DataId,
                Group     = _configurationSource.Group,
                Tenant    = _configurationSource.Tenant,
                Callbacks = new System.Collections.Generic.List <Action <string> >
                {
                    x => CallBackReload(x)
                }
            });
        }
        public NacosConfigurationProvider(NacosConfigurationSource configurationSource)
        {
            _configurationSource = configurationSource;
            _parser     = configurationSource.NacosConfigurationParser;
            _configDict = new ConcurrentDictionary <string, string>(StringComparer.OrdinalIgnoreCase);

            var nacosLoggerFactory = Nacos.Microsoft.Extensions.Configuration.NacosLog.NacosLoggerFactory.GetInstance(configurationSource.LoggingBuilder);

            _logger = nacosLoggerFactory.CreateLogger <NacosConfigurationProvider>();

            _client = new NacosMsConfigClient(nacosLoggerFactory, new NacosOptions
            {
                ServerAddresses = configurationSource.ServerAddresses,
                Namespace       = configurationSource.Tenant,
                AccessKey       = configurationSource.AccessKey,
                ClusterName     = configurationSource.ClusterName,
                ContextPath     = configurationSource.ContextPath,
                EndPoint        = configurationSource.EndPoint,
                DefaultTimeOut  = configurationSource.DefaultTimeOut,
                SecretKey       = configurationSource.SecretKey,
                Password        = configurationSource.Password,
                UserName        = configurationSource.UserName,
                ListenInterval  = 20000
            });

            if (configurationSource.Listeners != null && configurationSource.Listeners.Any())
            {
                var tasks = new List <Task>();

                foreach (var item in configurationSource.Listeners)
                {
                    tasks.Add(_client.AddListenerAsync(new AddListenerRequest
                    {
                        DataId    = item.DataId,
                        Group     = item.Group,
                        Tenant    = configurationSource.Tenant,
                        Callbacks = new System.Collections.Generic.List <Action <string> >
                        {
                            x => CallBackReload($"{configurationSource.Tenant}#{item.Group}#{item.DataId}", x, item.Optional)
                        }
                    }));
                }

                Task.WhenAll(tasks).ConfigureAwait(false);
            }
            else
            {
                _client.AddListenerAsync(new AddListenerRequest
                {
#pragma warning disable CS0618
                    DataId    = _configurationSource.DataId,
                    Group     = _configurationSource.Group,
                    Tenant    = _configurationSource.Tenant,
                    Callbacks = new System.Collections.Generic.List <Action <string> >
                    {
                        x => CallBackReload($"{_configurationSource.Tenant}#{_configurationSource.Group}#{_configurationSource.DataId}", x, _configurationSource.Optional)
                    }
#pragma warning restore CS0618
                });
            }
        }