package main import ( "context" "flag" pb "github.com/helloworlde/grpc-gateway/proto/api" _ "github.com/mbobakov/grpc-consul-resolver" "google.golang.org/grpc" "google.golang.org/grpc/credentials/insecure" "google.golang.org/grpc/grpclog" "log" ) const ( defaultName = "tcq" ) //var ( // addr = flag.String("addr", "127.0.0.1:9090", "the address to connect to") //) func main() { flag.Parse() if err := run(); err != nil { grpclog.Fatal(err) } } func run() error { ctx := context.Background() ctx, cancel := context.WithCancel(ctx) defer cancel() conn, err := grpc.Dial( // consul://192.168.193.128:8500 consul地址 // test-serve 拉取的服务名 // wait=14s 等待时间 // tag=manual 筛选条件 // 底层就是利用grpc-consul-resolver将参数解析成HTTP请求获取对应的服务 "consul://127.0.0.1:8500/hello?wait=5s&tag=hellotag", grpc.WithTransportCredentials(insecure.NewCredentials()), grpc.WithDefaultServiceConfig(`{"hello": "helloService"}`), ) if err != nil { log.Fatal(err) } defer conn.Close() c := pb.NewHelloServiceClient(conn) // Contact the server and print out its response. r, err := c.Hello(ctx, &pb.HelloMessage{ Message: defaultName, }) if err != nil { log.Fatalf("could not greet: %v", err) } log.Printf("Greeting: %s", r.GetResult()) return nil }