全部產品
Search
文件中心

Alibaba Cloud SDK:重試機制

更新時間:Jul 01, 2024

本節主要介紹V2.0 Go SDK的重試機制配置方式。

說明

在V2.0 SDK中,OpenAPI請求的處理邏輯內建了網路異常重試邏輯,即當遇到網路異常問題時,系統會自動嘗試重新發起請求,以確保服務的穩定性和可靠性。若請求因商務邏輯錯誤而報錯,例如參數錯誤、資源不存在等情況,SDK將不會執行重試操作,這是因為業務層面的錯誤通常需要應用程式根據具體的錯誤資訊做出相應的處理或調整,而非簡單地重複嘗試。

重試機制配置方式

說明

逾時機制配置優先順序:RuntimeOption配置 -> 預設,優先順序依次降低。

  • 使用預設配置。預設情況下不會進行重試,如果開啟重試配置且未配置重試次數,則預設最多重試3次。

  • 通過運行時參數(RuntimeOptions)配置重試機制。

    package main
    
    import (
    	"encoding/json"
    	"fmt"
    	"os"
    
    	openapi "github.com/alibabacloud-go/darabonba-openapi/v2/client"
    	ecs20140526 "github.com/alibabacloud-go/ecs-20140526/v4/client"
    	util "github.com/alibabacloud-go/tea-utils/v2/service"
    	"github.com/alibabacloud-go/tea/tea"
    )
    
    func main() {
    	config := &openapi.Config{
    		// 從環境變數擷取RAM使用者的AccessKey ID
    		AccessKeyId: tea.String(os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")),
    		// 從環境變數擷取RAM使用者的AccessKey Secret
    		AccessKeySecret: tea.String(os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")),
    		// Region ID
    		RegionId: tea.String("<RegionId>"),
    	}
    	client, _err := ecs20140526.NewClient(config)
    	if _err != nil {
    		panic(_err)
    	}
    	describeRegionsRequest := &ecs20140526.DescribeRegionsRequest{}
    	// 建立RuntimeObject執行個體並設定運行參數。
    	runtime := &util.RuntimeOptions{}
    	// 開啟自動重試機制
    	runtime.Autoretry = tea.Bool(true)
    	// 設定自動重試次數
    	runtime.MaxAttempts = tea.Int(3)
    	resp, _err := client.DescribeRegionsWithOptions(describeRegionsRequest, runtime)
    	if _err != nil {
    		panic(_err)
    	}
    	// response 包含服務端響應的 body 和 headers
    	body, err := json.Marshal(resp.Body)
    	if err != nil {
    		panic(err)
    	}
    	fmt.Printf("body: %s\n", string(body))
    }