grpcexercises/consuldemo/client/main.go

66 lines
1.5 KiB
Go
Raw Permalink Normal View History

2023-12-16 08:32:39 +08:00
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)
}