🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
### 安装golang consul api包 go get -u github.com/hashicorp/consul/api ## 服务端代码 type Children struct{} // 绑定类方法 实现接口 func (this *Children) SayHello(ctx context.Context, p *pb.Person) (*pb.Person, error) { p.Name = "hello " + p.Name return p, nil } func main() { //初始化配置 cfg := api.DefaultConfig() //创建consul对象 (可以重新指定consule 属性 也可以使用默认) client, err := api.NewClient(cfg) if err != nil { fmt.Println("api.newclient:", err) return } //配置consul的注册服务信息 regServ := api.AgentServiceRegistration{ Tags: []string{"serve"}, Name: "Facid", Port: 8800, Address: "192.168.10.130", Check:&api.AgentServiceCheck{ CheckID:"consul grpc test", TCP:"192.168.10.130:8800", Timeout:"1s", Interval:"5s", }, } //注册grpc服务 client.Agent().ServiceRegister(&regServ) // 初始化对象 gserv := grpc.NewServer() // 注册服务 fmt.Println(gserv) pb.RegisterHelloServer(gserv, new(Children)) // 监听 listener, err := net.Listen("tcp", "192.168.10.130:8800") if err != nil { fmt.Println("Listen err:", err) } defer listener.Close() // 启动服务 gserv.Serve(listener) }