通过轮训方式调用远程服务

直接代码

func main() {
    config := consulapi.DefaultConfig()
    config.Address = "192.168.1.8:8500"
    apiClient, err := consulapi.NewClient(config)
    if err != nil {
        panic(err)
    }
    client := consul.NewClient(apiClient)

    var logger log.Logger
    logger = log.NewLogfmtLogger(os.Stdout)
    tags := []string{"user"}
    instance := consul.NewInstancer(client, logger, "user", tags, true)

    factory := func(serviceURL string) (endpoint2.Endpoint, io.Closer, error) {
        target, _ := url.Parse("http://" + serviceURL)
        return transporthttp.NewClient("GET", target, transport2.GetUserInfoRequest, transport2.GetUserInfoResponse).Endpoint(), nil, nil
    }
    endpointer := sd.NewEndpointer(instance, factory, logger)
    ends, _ := endpointer.Endpoints()
    fmt.Println("个服务", len(ends))

    myLb := lb.NewRoundRobin(endpointer)
    for {
        getUserInfo, _ := myLb.Endpoint()

        resp, err := getUserInfo(context.Background(), endpoint.UserRequest{Uid: 101})
        if err != nil {
            panic(err)
        }
        userResponse := resp.(endpoint.UserResponse)
        fmt.Println(userResponse.Result)
        time.Sleep(time.Second * 1)
    }

}

results matching ""

    No results matching ""