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)); } }
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中的节点一致,无需更新"); } }