grpcexercises/consuldemo/client/main.go

66 lines
1.5 KiB
Go
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package main
import (
"context"
"fmt"
"git.gqnotes.com/guoqiang/grpcexercises/consuldemo/pb"
"git.gqnotes.com/guoqiang/grpcexercises/consuldemo/pkg/consul"
"google.golang.org/grpc"
"google.golang.org/grpc/credentials/insecure"
"log"
"math/rand"
)
func main() {
// 通过consul服务发现调用grpc接口
consulAddress := "localhost:8500"
serviceName := "service-grpcdemo"
// 初始化consul客户端
if err := consul.InitConsulClient(consulAddress); err != nil {
log.Fatalf("init consul client failed:%+v", err)
}
// 获取consul客户端
client := consul.GetConsulClient()
// 获取服务
services, _, err := client.Health().Service(serviceName, "", true, nil)
if err != nil {
log.Fatalf("get service failed:%+v", err)
}
// 随机获取一个服务
service := services[rand.Intn(len(services))]
// 拼接服务地址
address := fmt.Sprintf("%s:%d", service.Service.Address, service.Service.Port)
log.Printf("grpc client call address:%s", address)
// 连接grpc服务
conn, err := grpc.Dial(address, grpc.WithTransportCredentials(insecure.NewCredentials()))
if err != nil {
log.Fatalf("grpc client dial failed:%+v", err)
}
defer conn.Close()
// 创建grpc客户端
grpcClient := pb.NewGreetServiceClient(conn)
// 调用grpc接口
resp, err := grpcClient.Greet(context.Background(), &pb.GreetRequest{
Greeting: "zhangsan",
})
if err != nil {
log.Fatalf("grpc client call greet failed:%+v", err)
return
}
log.Printf("grpc client call greet success:%+v", resp)
}