代码拉取完成,页面将自动刷新
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
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。