配置调用超时

1. 准备工作

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

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

dubbo:
  consumer:
    request-timeout: 15s # Configure client timeout

Dubbo-go 应用的默认 RPC 超时时间为 3 秒。请求超时后,客户端将返回一个错误,错误上下文为 deadline exceeded。在本任务中,您需要先修改演示应用的服务器函数,使其耗时较长,然后检查客户端的超时错误;然后配置客户端超时时间,以便可以正常调用耗时函数。

  1. go-server/cmd/server.go:将演示应用服务器的函数修改为耗时 10 秒的函数

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

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

    dubbo:
      consumer:
        request-timeout: 15s # Configure client timeout
        references:
          GreeterClientImpl:
            protocol: tri
            url: "tri://:20000"
            interface: "" # read from pb
    
  4. 再次通过客户端发起调用,观察日志,正常返回

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

上次修改时间:2023 年 1 月 2 日:增强 Dubbogo 文档 (#1800) (71c8e722740)