snippet/grpc/grpc.go

58 lines
982 B
Go

package grpc
import (
"fmt"
"log"
"net"
"google.golang.org/grpc"
"google.golang.org/grpc/reflection"
)
type GrpcService interface {
Register(srv *grpc.Server)
}
type Config struct {
Address string
Port int
AppName string
}
var rpc *grpc.Server
var conf *Config
func Init(config *Config) *grpc.Server {
if config == nil {
config = &Config{
Address: "",
Port: 0,
AppName: "dev",
}
}
conf = config
if rpc == nil {
rpc = grpc.NewServer(grpc.MaxRecvMsgSize(1024*1024), grpc.MaxSendMsgSize(1024*1024))
}
return rpc
}
func Start() {
//注册反射 用于grpcurl调试
reflection.Register(rpc)
// grpc服务启动
go func() {
log.Printf("starting grpc service on %s:%d", conf.Address, conf.Port)
lis, err := net.Listen("tcp", fmt.Sprintf("%s:%d", conf.Address, conf.Port))
if err != nil {
log.Fatal("fail to open port: ", err)
}
err = rpc.Serve(lis)
if err != nil {
log.Fatal("fail to open microservice: ", err)
}
}()
}