1 Star 0 Fork 0

PengHengBen/devcloud-mini

加入 Gitee
与超过 1400万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
grpc.go 1.31 KB
一键复制 编辑 原始数据 按行查看 历史
PengHengBen 提交于 2024-02-19 17:19 +08:00 . 实现跨服务tracer追踪
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()
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/penghengben/devcloud-mini.git
git@gitee.com:penghengben/devcloud-mini.git
penghengben
devcloud-mini
devcloud-mini
52595909206d

搜索帮助