代码拉取完成,页面将自动刷新
package protocol
import (
"context"
"net"
"gitee.com/penghengben/devcloud-mini/mcenter/conf"
"gitee.com/penghengben/devcloud-mini/mcenter/logger"
"github.com/infraboard/mcube/ioc"
"go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc"
"google.golang.org/grpc"
)
// 如果http 服务器使用哪个路由, 当做参数传递进来
func NewGrpc() *Grpc {
return &Grpc{
server: grpc.NewServer(
grpc.ChainUnaryInterceptor(
// 添加Grpc Trace中间件
otelgrpc.UnaryServerInterceptor(),
),
),
}
}
type Grpc struct {
server *grpc.Server
}
func (g *Grpc) Start() error {
// 2.1 加载grpc业务实现类
// LoadGinApi 基于 gin 的restful handler 实例的托管对象, 需要通过gin router来暴露restful接口
// LoadGoRestfulApi 基于 gorestful http框架的托管对象
// LoadGrpcController 实现了Grpc Server的对象 需要注册到中央的协议服务 grpc server
ioc.LoadGrpcController(g.server)
logger.L().Debug().Msgf("loaded controllers: %s", ioc.ListControllerObjectNames())
// 2.3 启动grpc server
lis, err := net.Listen("tcp", conf.C().Grpc.Address())
if err != nil {
return err
}
logger.L().Debug().Msgf("grpc server listen: %s", conf.C().Grpc.Address())
return g.server.Serve(lis)
}
func (g *Grpc) Stop(ctx context.Context) {
g.server.GracefulStop()
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。