rpcx客户端调用服务端超时的技术细节

微笑、不失礼 提交于 2020-05-08 16:27:47

0x1

微服务服务之间的调用超时设置是很重要的,有时候某个服务因为某些原因响应缓慢,或不可用的时候,这时为了保证调用方的服务正常,超时设置就很有必要。我们来看看rpcx的调用服务超时的技术细节是如何的。

0x2

客户端代码


func main() {
  d := client.NewConsulDiscovery(*basePath, "Echo", []string{*consulAddr}, nil)
  option := client.DefaultOption
  // 设置了响应服务端的超时时间为5秒
  option.ReadTimeout = 5 * time.Second
  xclient := client.NewXClient("Echo", client.Failtry, client.RandomSelect, d, option)
  defer xclient.Close()
  args := &Args{
    Name:     "Rabbit",
  }
  reply := &Reply{}
  err = xclient.Call(ctx, "Say", args, reply)
  if err != nil {
    log.Fatalf("调用失败: %v", err)
  }
  log.Printf("%s\n", reply.Greet)
}

这段代码表示,当客户端调用Echo服务的时候,假如Echo服务的响应超过5秒,则客户端直接返回,继续执行下面的逻辑

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!