4 Star 12 Fork 3

yasenagat / gokit-inaction

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
client.go 2.17 KB
一键复制 编辑 原始数据 按行查看 历史
yasenagat 提交于 2020-04-09 10:31 . U-更新readme
package main
import (
"flag"
"fmt"
"gitee.com/godY/gokit-inaction/consul/kit/grpc/svr/kit"
"gitee.com/godY/gokit-inaction/consul/kit/grpc/svr/pb"
"github.com/go-kit/kit/endpoint"
"github.com/go-kit/kit/log"
"github.com/go-kit/kit/sd"
"github.com/go-kit/kit/sd/consul"
"github.com/go-kit/kit/sd/lb"
kitgrpc "github.com/go-kit/kit/transport/grpc"
"github.com/hashicorp/consul/api"
"golang.org/x/net/context"
"google.golang.org/grpc"
"io"
"os"
"time"
)
func main() {
us := NewUserClient()
for i := 0; i < 10; i++ {
req := pb.LoginReq{}
req.Username = "abc"
req.Pwd = "123"
res, e := us.Login(context.Background(), &req)
if e != nil {
fmt.Println(e)
return
}
fmt.Println(res.Code, res.Msg)
}
}
type UserClient struct {
LoginEndpoint endpoint.Endpoint
}
func NewUserClient() pb.UserServer {
loginEndpoint := newEndpoint()
return &UserClient{LoginEndpoint: loginEndpoint}
}
func (uc UserClient) Login(ctx context.Context, req *pb.LoginReq) (*pb.LoginRes, error) {
res, e := uc.LoginEndpoint(ctx, req)
if e != nil {
return nil, e
}
return res.(*pb.LoginRes), nil
}
func newEndpoint() endpoint.Endpoint {
var logger log.Logger
{
logger = log.NewLogfmtLogger(os.Stderr)
logger = log.With(logger, "ts", log.DefaultTimestampUTC)
logger = log.With(logger, "caller", log.DefaultCaller)
}
consuladdr := flag.String("consul.addr", "192.168.10.210:8500", "")
flag.Parse()
cfg := api.DefaultConfig()
cfg.Address = *consuladdr
c, e := api.NewClient(cfg)
if e != nil {
logger.Log("err", e)
os.Exit(-1)
}
kitc := consul.NewClient(c)
instancer := consul.NewInstancer(kitc, logger, "GrpcUserSvr", nil, true)
endpointer := sd.NewEndpointer(instancer, func(instance string) (endpoint.Endpoint, io.Closer, error) {
logger.Log("instance", instance)
conn, e := grpc.Dial(instance, grpc.WithInsecure())
//defer conn.Close()
if e != nil {
fmt.Println(e)
os.Exit(-1)
}
return kitgrpc.NewClient(conn, "pb.User", "Login", kit.NoEncodeRequestFunc, kit.NoDecodeResponseFunc, pb.LoginRes{}).Endpoint(), conn, nil
}, logger)
balancer := lb.NewRoundRobin(endpointer)
retry := lb.Retry(3, 5000*time.Millisecond, balancer)
return retry
}
Go
1
https://gitee.com/godY/gokit-inaction.git
git@gitee.com:godY/gokit-inaction.git
godY
gokit-inaction
gokit-inaction
201036b8f164

搜索帮助

53164aa7 5694891 3bd8fe86 5694891