修复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 ( import (
"fmt" "fmt"
"github.com/smartwalle/alipay/v3" "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/redis"
"github.com/zeromicro/go-zero/core/stores/sqlx" "github.com/zeromicro/go-zero/core/stores/sqlx"
"github.com/zeromicro/go-zero/zrpc" "github.com/zeromicro/go-zero/zrpc"
@ -44,8 +45,15 @@ func NewServiceContext(c config.Config) *ServiceContext {
if err != nil { if err != nil {
panic(fmt.Sprintf("加载支付宝公钥失败: %v", err)) 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{ return &ServiceContext{
Config: c, Config: c,
Redis: rds, Redis: rds,

View File

@ -1,6 +1,7 @@
package svc package svc
import ( import (
"github.com/zeromicro/go-zero/core/logx"
"github.com/zeromicro/go-zero/core/stores/redis" "github.com/zeromicro/go-zero/core/stores/redis"
"github.com/zeromicro/go-zero/core/stores/sqlx" "github.com/zeromicro/go-zero/core/stores/sqlx"
"github.com/zeromicro/go-zero/zrpc" "github.com/zeromicro/go-zero/zrpc"
@ -30,6 +31,24 @@ func NewServiceContext(c config.Config) *ServiceContext {
Pass: c.CacheRedis[0].Pass, Pass: c.CacheRedis[0].Pass,
Type: c.CacheRedis[0].Type, // Redis 节点类型,如 "node" 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 客户端 // 使用 MustNewRedis 来初始化 Redis 客户端
rds := redis.MustNewRedis(redisConf) rds := redis.MustNewRedis(redisConf)
@ -43,7 +62,7 @@ func NewServiceContext(c config.Config) *ServiceContext {
DeductionsModel: model.NewDeductionsModel(db, c.CacheRedis), DeductionsModel: model.NewDeductionsModel(db, c.CacheRedis),
ApiRequestsModel: model.NewApiRequestsModel(db, c.CacheRedis), ApiRequestsModel: model.NewApiRequestsModel(db, c.CacheRedis),
RechargeModel: model.NewRechargeModel(db, c.CacheRedis), RechargeModel: model.NewRechargeModel(db, c.CacheRedis),
SecretRpc: sentinel.NewSecretClient(zrpc.MustNewClient(c.SentinelRpc).Conn()), SecretRpc: secretRpc, // 捕获连接错误后,继续运行
ProductRpc: sentinel.NewProductClient(zrpc.MustNewClient(c.SentinelRpc).Conn()), ProductRpc: productRpc, // 捕获连接错误后,继续运行
} }
} }