Пример #1
0
        public CanalService(ILogger <CanalService> logger, IOptions <CanalOption> canalOption, IServiceScopeFactory scopeFactory, IConfiguration configuration, CanalConsumeRegister register)
        {
            _logger           = logger;
            _registerTypeList = new List <System.Type>();
            if (register.SingletonConsumeList != null && register.SingletonConsumeList.Any())
            {
                _registerTypeList.AddRange(register.SingletonConsumeList);
            }
            if (register.ConsumeList != null && register.ConsumeList.Any())
            {
                _registerTypeList.AddRange(register.ConsumeList);
            }
            _configuration = configuration;
            _canalOption   = canalOption?.Value;
            if (_canalOption == null)
            {
                _canalOption = new CanalOption();
            }

            UpdateFromEnv(_canalOption);

            if (string.IsNullOrEmpty(_canalOption.Host) || string.IsNullOrEmpty(_canalOption.Destination) ||
                string.IsNullOrEmpty(_canalOption.MysqlName) ||
                string.IsNullOrEmpty(_canalOption.MysqlPwd) || _canalOption.Port < 1 || _canalOption.Timer < 1 || _canalOption.GetCountsPerTimes < 1)
            {
                throw new ArgumentNullException("Canal param in appsettings.json is not correct!");
            }

            if (string.IsNullOrEmpty(_canalOption.Subscribe))
            {
                _canalOption.Subscribe = ".*\\..*";
            }
            _scope = scopeFactory.CreateScope();
        }
Пример #2
0
        private void UpdateFromEnv(CanalOption _can)
        {
            var host = _configuration["canal.host"];

            if (!string.IsNullOrEmpty(host))
            {
                _can.Host = host;
            }

            var port = _configuration["canal.port"];

            if (!string.IsNullOrEmpty(port))
            {
                _can.Port = int.Parse(port);
            }

            var destinations = _configuration["canal.destinations"];

            if (!string.IsNullOrEmpty(destinations))
            {
                _can.Destination = destinations;
            }
            var subcribe = _configuration["canal.subscribe"];

            if (!string.IsNullOrEmpty(subcribe))
            {
                _can.Subscribe = subcribe;
            }
            var dbUsername = _configuration["canal.dbUsername"];

            if (!string.IsNullOrEmpty(dbUsername))
            {
                _can.MysqlName = dbUsername;
            }

            var dbPassword = _configuration["canal.dbPassword"];

            if (!string.IsNullOrEmpty(dbPassword))
            {
                _can.MysqlPwd = dbPassword;
            }

            var timer = _configuration["canal.timer"];

            if (!string.IsNullOrEmpty(timer))
            {
                _can.Timer = int.Parse(timer);
            }

            var getCountsPerTimes = _configuration["canal.getCountsPerTimes"];

            if (!string.IsNullOrEmpty(getCountsPerTimes))
            {
                _can.GetCountsPerTimes = int.Parse(getCountsPerTimes);
            }
        }