From 2535572d17d2731e6d5105952a966fd034565867 Mon Sep 17 00:00:00 2001 From: liangzai <2440983361@qq.com> Date: Tue, 15 Oct 2024 17:53:15 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8Drpc=E5=90=AF=E5=8A=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/sentinel/internal/svc/servicecontext.go | 10 ++++++++- apps/user/internal/svc/servicecontext.go | 23 ++++++++++++++++++-- 2 files changed, 30 insertions(+), 3 deletions(-) diff --git a/apps/sentinel/internal/svc/servicecontext.go b/apps/sentinel/internal/svc/servicecontext.go index d5f07cc..0cd91dd 100644 --- a/apps/sentinel/internal/svc/servicecontext.go +++ b/apps/sentinel/internal/svc/servicecontext.go @@ -3,6 +3,7 @@ package svc import ( "fmt" "github.com/smartwalle/alipay/v3" + "github.com/zeromicro/go-zero/core/logx" "github.com/zeromicro/go-zero/core/stores/redis" "github.com/zeromicro/go-zero/core/stores/sqlx" "github.com/zeromicro/go-zero/zrpc" @@ -44,8 +45,15 @@ func NewServiceContext(c config.Config) *ServiceContext { if err != nil { panic(fmt.Sprintf("加载支付宝公钥失败: %v", err)) } + var walletRpc user.WalletServiceClient - walletRpc := user.NewWalletServiceClient(zrpc.MustNewClient(c.UserRpc).Conn()) + // 捕获RPC初始化时的错误,但不影响服务启动 + userClient, err := zrpc.NewClient(c.UserRpc) + if err != nil { + logx.Errorf("Failed to connect to SecretRpc: %v", err) + } else { + walletRpc = user.NewWalletServiceClient(userClient.Conn()) + } return &ServiceContext{ Config: c, Redis: rds, diff --git a/apps/user/internal/svc/servicecontext.go b/apps/user/internal/svc/servicecontext.go index cfed8a8..b0e760f 100644 --- a/apps/user/internal/svc/servicecontext.go +++ b/apps/user/internal/svc/servicecontext.go @@ -1,6 +1,7 @@ package svc import ( + "github.com/zeromicro/go-zero/core/logx" "github.com/zeromicro/go-zero/core/stores/redis" "github.com/zeromicro/go-zero/core/stores/sqlx" "github.com/zeromicro/go-zero/zrpc" @@ -30,6 +31,24 @@ func NewServiceContext(c config.Config) *ServiceContext { Pass: c.CacheRedis[0].Pass, Type: c.CacheRedis[0].Type, // Redis 节点类型,如 "node" } + // 初始化 SecretRpc 和 ProductRpc + var secretRpc sentinel.SecretClient + var productRpc sentinel.ProductClient + + // 捕获RPC初始化时的错误,但不影响服务启动 + secretClient, err := zrpc.NewClient(c.SentinelRpc) + if err != nil { + logx.Errorf("Failed to connect to SecretRpc: %v", err) + } else { + secretRpc = sentinel.NewSecretClient(secretClient.Conn()) + } + + productClient, err := zrpc.NewClient(c.SentinelRpc) + if err != nil { + logx.Errorf("Failed to connect to ProductRpc: %v", err) + } else { + productRpc = sentinel.NewProductClient(productClient.Conn()) + } // 使用 MustNewRedis 来初始化 Redis 客户端 rds := redis.MustNewRedis(redisConf) @@ -43,7 +62,7 @@ func NewServiceContext(c config.Config) *ServiceContext { DeductionsModel: model.NewDeductionsModel(db, c.CacheRedis), ApiRequestsModel: model.NewApiRequestsModel(db, c.CacheRedis), RechargeModel: model.NewRechargeModel(db, c.CacheRedis), - SecretRpc: sentinel.NewSecretClient(zrpc.MustNewClient(c.SentinelRpc).Conn()), - ProductRpc: sentinel.NewProductClient(zrpc.MustNewClient(c.SentinelRpc).Conn()), + SecretRpc: secretRpc, // 捕获连接错误后,继续运行 + ProductRpc: productRpc, // 捕获连接错误后,继续运行 } }