From aeced7874cbf833aae355fdf2fae8048bb5e6136 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=96=8C?= <259278618@qq.com> Date: Mon, 20 Apr 2026 19:46:33 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BD=91=E7=BB=9C=E7=8E=AF=E5=A2=83=E8=B0=83?= =?UTF-8?q?=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- consul/consul.go | 74 ------------------------------------------------ 1 file changed, 74 deletions(-) diff --git a/consul/consul.go b/consul/consul.go index 4318161..fb5b69a 100644 --- a/consul/consul.go +++ b/consul/consul.go @@ -53,78 +53,6 @@ func connectConsul(ctx context.Context) error { return nil } -// startHealthCheckAndReconnect 启动健康检查和自动重连 -func startHealthCheckAndReconnect() { - if reconnectDone != nil { - close(reconnectDone) - } - - reconnectDone = make(chan struct{}) - ticker := time.NewTicker(30 * time.Second) - defer ticker.Stop() - - ctx := context.Background() - - // 初始化HTTP客户端用于健康检查 - httpClient = &http.Client{ - Timeout: 30 * time.Second, - } - - for { - select { - case <-ticker.C: - // 检查服务发现是否正常工作 - if checkConsulHealth(ctx) { - continue - } - - g.Log().Warning(ctx, "⚠️ Consul 连接异常,尝试重新连接...") - - // 重置连接状态并重连 - reconnectMutex.Lock() - connected = false - registry = nil - reconnectMutex.Unlock() - - if err := connectConsul(ctx); err != nil { - g.Log().Errorf(ctx, "❌ Consul 重连失败: %v,30秒后重试...", err) - } - - case <-reconnectDone: - g.Log().Info(ctx, "🛑 Consul 健康检查已停止") - return - } - } -} - -// checkConsulHealth 检查 Consul 健康状态 -func checkConsulHealth(ctx context.Context) bool { - reconnectMutex.RLock() - defer reconnectMutex.RUnlock() - - if registry == nil || !connected { - return false - } - - // 使用consul原生API进行健康检查 - // 调用 /v1/agent/self 接口检测连接状态 - url := fmt.Sprintf("http://%s/v1/agent/self", consulAddr) - resp, err := httpClient.Get(url) - if err != nil { - g.Log().Debugf(ctx, "Consul 健康检查失败: %v", err) - return false - } - defer resp.Body.Close() - - if resp.StatusCode != http.StatusOK { - g.Log().Debugf(ctx, "Consul 健康检查失败,状态码: %d", resp.StatusCode) - return false - } - - //g.Log().Debugf(ctx, "✅ Consul 健康检查通过") - return true -} - func init() { ctx := context.Background() @@ -136,8 +64,6 @@ func init() { if err := connectConsul(ctx); err != nil { g.Log().Errorf(ctx, "❌ Consul 初始化失败: %v", err) - } else { - go startHealthCheckAndReconnect() } loadConfigFromConsul()