diff --git a/contrib/rpc/grpcx/grpcx_grpc_server.go b/contrib/rpc/grpcx/grpcx_grpc_server.go index ff16dee8e..395d672fe 100644 --- a/contrib/rpc/grpcx/grpcx_grpc_server.go +++ b/contrib/rpc/grpcx/grpcx_grpc_server.go @@ -262,10 +262,14 @@ func (s *GrpcServer) GetListenedPort() int { func (s *GrpcServer) calculateListenedEndpoints(ctx context.Context) gsvc.Endpoints { var ( - configAddr = s.config.Address - endpoints = make(gsvc.Endpoints, 0) + configAddr = s.config.Address + endpoints = make(gsvc.Endpoints, 0) + configAddrs = s.config.Endpoints ) - for _, address := range gstr.SplitAndTrim(configAddr, ",") { + if len(configAddrs) == 0 { + configAddrs = gstr.SplitAndTrim(configAddr, ",") + } + for _, address := range configAddrs { var ( addrArray = gstr.Split(address, ":") listenedIps []string diff --git a/contrib/rpc/grpcx/grpcx_grpc_server_config.go b/contrib/rpc/grpcx/grpcx_grpc_server_config.go index 77e79a0fe..af30b62d6 100644 --- a/contrib/rpc/grpcx/grpcx_grpc_server_config.go +++ b/contrib/rpc/grpcx/grpcx_grpc_server_config.go @@ -28,6 +28,7 @@ type GrpcServerConfig struct { ErrorLogPattern string // (optional) ErrorLogPattern specifies the error log file pattern like: error-{Ymd}.log AccessLogEnabled bool // (optional) AccessLogEnabled enables access logging content to file. AccessLogPattern string // (optional) AccessLogPattern specifies the error log file pattern like: access-{Ymd}.log + Endpoints []string // (optional) Address for server register if null use Address value. Options []grpc.ServerOption // (optional) GRPC Server options. } diff --git a/contrib/rpc/grpcx/grpcx_grpc_server_config_test.go b/contrib/rpc/grpcx/grpcx_grpc_server_config_test.go new file mode 100644 index 000000000..7049205c5 --- /dev/null +++ b/contrib/rpc/grpcx/grpcx_grpc_server_config_test.go @@ -0,0 +1,36 @@ +package grpcx + +import ( + "testing" + + "github.com/gogf/gf/v2/test/gtest" +) + +func Test_Grpcx_Grpc_Server_Config(t *testing.T) { + cfg := Server.NewConfig() + addr := "10.0.0.29:80" + cfg.Endpoints = []string{ + addr, + } + // cfg set one endpoint + gtest.C(t, func(t *gtest.T) { + s := Server.New(cfg) + s.doServiceRegister() + for _, svc := range s.services { + t.Assert(svc.GetEndpoints().String(), addr) + } + }) + // cfg set more endpoints + addr = "10.0.0.29:80,10.0.0.29:81" + cfg.Endpoints = []string{ + "10.0.0.29:80", + "10.0.0.29:81", + } + gtest.C(t, func(t *gtest.T) { + s := Server.New(cfg) + s.doServiceRegister() + for _, svc := range s.services { + t.Assert(svc.GetEndpoints().String(), addr) + } + }) +}