配置调用超时
1. 准备工作
- 已安装 dubbo-go cli 工具和依赖工具
- 创建一个新的演示应用
2. 通过配置项修改 RPC 调用相关参数
2.1 修改调用的超时时间并验证
dubbo:
consumer:
request-timeout: 15s # Configure client timeout
Dubbo-go 应用的默认 RPC 超时时间为 3 秒。请求超时后,客户端将返回一个错误,错误上下文为 deadline exceeded。在本任务中,您需要先修改演示应用的服务器函数,使其耗时较长,然后检查客户端的超时错误;然后配置客户端超时时间,以便可以正常调用耗时函数。
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 }
客户端发起调用并观察错误日志
ERROR cmd/client.go:47 context deadline exceeded
go-client/conf/dubbogo.yaml:客户端修改超时时间
dubbo: consumer: request-timeout: 15s # Configure client timeout references: GreeterClientImpl: protocol: tri url: "tri://:20000" interface: "" # read from pb
再次通过客户端发起调用,观察日志,正常返回
client response result: name: "Hello laurence" id: "12345" age:21
上次修改时间:2023 年 1 月 2 日:增强 Dubbogo 文档 (#1800) (71c8e722740)