修复rpc启动

This commit is contained in:
liangzai 2024-10-15 17:53:15 +08:00
parent b9f56f6b88
commit 2535572d17
2 changed files with 30 additions and 3 deletions

View File

@ -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,

View File

@ -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, // 捕获连接错误后,继续运行
}
}