通过consul获取endpoint通信
编写客户端代码
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))
getUserInfo := ends[0]
resp, err := getUserInfo(context.Background(), endpoint.UserRequest{Uid: 101})
if err != nil {
panic(err)
}
userResponse := resp.(endpoint.UserResponse)
fmt.Println(userResponse.Result)
}