配置呼叫逾時

1. 準備工作

  • 已安裝 dubbo-go cli 工具和相關依賴工具
  • 建立新的 demo 應用程式

2.1 修改呼叫逾時並驗證

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

Dubbo-go 應用程式的預設 RPC 逾時為 3 秒。請求逾時後,客戶端將返回一個錯誤,錯誤上下文為 deadline exceeded。在此任務中,您需要先修改 demo 應用程式伺服器的函式,使其執行時間較長,然後檢查客戶端的逾時錯誤;接著配置客戶端逾時,以便可以正常呼叫耗時函式。

  1. go-server/cmd/server.go:將 demo 應用程式伺服器的函式修改為執行 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)