public Task InvokeAsync(HttpContext context, RequestDelegate next)
        {
            if (context.Request.Path.Value.Equals("/"))
            {
                var message = $"监听jodis/{_zkclient._zksetting.zkProxyDir}节点<br />当前节点值:{ string.Join(",", _zkclient.zkhelper.pools.Select(s => s.Addr).ToList()) }";

                message += $"<br />CC的当前值为:{_ccGHelper.GetCodisProxyValue()}";

                _logger.LogInformation(message.Replace("<br />", ";"));
                context.Response.ContentType = "text/html;charset=utf-8";
                return(context.Response.WriteAsync(message));
            }
            else if (context.Request.Path.Value.Equals("/getpools"))
            {
                var message = $"当前jodis/{_zkclient._zksetting.zkProxyDir}节点:{ string.Join(",", _zkclient.zkhelper.pools.Select(s => s.Addr).ToList()) }";
                message += $";CC的当前值为:{_ccGHelper.GetCodisProxyValue()}";
                _logger.LogInformation(message);
                context.Response.ContentType = "text/plain;charset=utf-8";
                return(context.Response.WriteAsync(message));
            }
            else if (context.Request.Path.Value.Equals("/update"))
            {
                _ = _zkclient.CheckCCAsync();
                var message = $"手动更新CC成功;当前jodis/{_zkclient._zksetting.zkProxyDir}节点:{ string.Join(",", _zkclient.zkhelper.pools.Select(s => s.Addr).ToList()) }";
                message += $";CC的当前值为:{_ccGHelper.GetCodisProxyValue()}";
                _logger.LogInformation(message);
                context.Response.ContentType = "text/plain;charset=utf-8";
                return(context.Response.WriteAsync(message));
            }
            else if (context.Request.Path.Value.ToLower().Equals("/mangoapi/configcentercall"))
            {
                string key     = context.Request.Query["key"];
                string value   = context.Request.Query["value"];
                var    message = $"CC回调通知,key={key},vaule={value};";
                _logger.LogInformation(message);
                context.Response.ContentType = "text/plain;charset=utf-8";
                return(context.Response.WriteAsync("100"));
            }
            else
            {
                return(next.Invoke(context));
            }
        }
Exemplo n.º 2
0
        public async Task CheckCCAsync()
        {
            bool chageTag = false;
            var  oldVal   = _ccGHelper.GetCodisProxyValue().Split(',').ToList();
            var  newVal   = zkhelper.pools.Select(a => a.Addr).ToList();

            _logger.LogInformation($"CC的的原有值:{string.Join(",", oldVal)};zk中最新的值:{string.Join(",", newVal)}");

            var listUnion = oldVal.Union(newVal);
            var listExp1  = listUnion.Except(oldVal).ToList();

            if (listExp1.Count > 0)
            {
                //增加了节点
                _logger.LogInformation($"zk中新增了节点:{string.Join(",", listExp1)}");
                chageTag = true;
            }
            var listExp2 = listUnion.Except(newVal).ToList();

            if (listExp2.Count > 0)
            {
                //删除了节点
                _logger.LogInformation($"zk中删除了节点:{string.Join(",", listExp2)}");
                chageTag = true;
            }

            if (chageTag)
            {
                //更新内容
                var newValStr = string.Join(",", newVal);
                _logger.LogInformation($"更新CC中的值为:{newValStr}");
                await _ccGHelper.SetCodisProxyValueAsync(newValStr);
            }
            else
            {
                _logger.LogInformation("CC的值与zk中的节点一致,无需更新");
            }
        }