58 lines
982 B
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)
|
|
}
|
|
}()
|
|
}
|