配置调用的超时

1. 准备工作

  • dubbo-go cli 工具和依赖工具已安装
  • 创建一个新的 demo 应用

2. 通过配置项修改 RPC 调用相关参数

2.1 修改调用的超时,并验证

  1. dubbo:
  2. consumer:
  3. request-timeout: 15s # 配置客户端超时

Dubbo-go 应用默认 RPC 超时为 3s,请求超时后,客户端将会返回error 为 context deadline exceeded 的错误。在本任务中,您需要首先修改 demo 应用的 server 函数为较长耗时,然后查看客户端的超时报错;再通过配置客户端超时,使得耗时函数可以正常调用。

  1. go-server/cmd/server.go: 修改 demo 应用 server 的函数为耗时 10s 的函数

    1. func (s *GreeterProvider) SayHello(ctx context.Context, in *api.HelloRequest) (*api.User, error) {
    2. logger.Infof("Dubbo3 GreeterProvider get user name = %s\n", in.Name)
    3. time.Sleep(time.Second*10) // sleep 10s
    4. return &api.User{Name: "Hello " + in.Name, Id: "12345", Age: 21}, nil
    5. }
  2. 客户端发起调用,观察错误日志

    1. ERROR cmd/client.go:47 context deadline exceeded
  3. go-client/conf/dubbogo.yaml: 客户端修改超时

    1. dubbo:
    2. consumer:
    3. request-timeout: 15s # 配置客户端超时
    4. references:
    5. GreeterClientImpl:
    6. protocol: tri
    7. url: "tri://localhost:20000"
    8. interface: "" # read from pb
  4. 再次通过客户端发起调用,观察日志,正常返回:

    1. client response result: name:"Hello laurence" id:"12345" age:21

最后修改 December 16, 2022: Fix check (#1736) (97972c1)