grpc学习golang版( 多服务示例 )
package main
import (
"context"
"log"
"net"
"google.golang.org/grpc"
"google.golang.org/grpc/reflection"
)
// 定义一个简单的服务
type GreeterService struct{}
// 服务必须实现我们在 proto 文件中定义的 GreeterServer 接口
func (s *GreeterService) Greet(ctx context.Context, req *GreetRequest) (*GreetResponse, error) {
return &GreetResponse{Message: "Hello " + req.Name}, nil
}
func main() {
// 1. 监听本地端口
listener, err := net.Listen("tcp", ":50051")
if err != nil {
log.Fatalf("failed to listen: %v", err)
}
// 2. 创建 gRPC 服务器实例
s := grpc.NewServer()
// 3. 注册服务
RegisterGreeterServer(s, &GreeterService{})
// 4. 启动反射服务器
reflection.Register(s)
// 5. 服务监听并处理请求
log.Println("服务启动,监听 :50051")
if err := s.Serve(listener); err != nil {
log.Fatalf("failed to serve: %v", err)
}
}
这段代码实现了一个简单的 gRPC 服务器,它提供了一个 Greet
方法来响应客户端请求。它遵循了上述代码的结构,包括服务的注册和反射的启用。这是学习 gRPC 在 Golang 中使用的一个很好的起点。
评论已关闭