全部產品
Search
文件中心

Alibaba Cloud SDK:重試機制

更新時間:Jul 01, 2024

本文為您介紹V2.0 Node.js SDK的重試機制配置方式。

說明

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

重試機制配置方式

說明

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

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

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

    JavaScript樣本

    const { default: Ecs20140526, ModifySecurityGroupRuleRequest, DescribeRegionsRequest } = require('@alicloud/ecs20140526');
    const { Config } = require('@alicloud/openapi-client');
    const { RuntimeOptions } = require('@alicloud/tea-util');
    
    async function main() {
        const config = new Config({
            // 從環境變數中擷取RAM使用者的AccessKey ID
            accessKeyId: process.env.ALIBABA_CLOUD_ACCESS_KEY_ID,
            // 從環境變數中擷取RAM使用者的AccessKey Secret
            accessKeySecret: process.env.ALIBABA_CLOUD_ACCESS_KEY_SECRET,
            // 訪問的地區
            regionId: 'cn-beijing',
        });
        const client = new Ecs20140526(config);
        const request = new DescribeRegionsRequest();
        // 建立RuntimeObject執行個體並設定運行參數。
        const runtime = new RuntimeOptions({
            // 設定開啟重試
            autoretry: true,
            // 設定重試次數
            maxAttempts: 3,
        });
        const resp = await client.describeRegionsWithOptions(request, runtime);
        console.log(resp.headers);
        console.log(resp.body);
    }
    
    main();

    TypeScript樣本

    import Ecs20140526, * as $Ecs20140526 from '@alicloud/ecs20140526';
    import * as $OpenApi from '@alicloud/openapi-client';
    import * as $Util from '@alicloud/tea-util';
    
    export default class Client {
        static async main(): Promise<void> {
            const config = new $OpenApi.Config({
                // 從環境變數中擷取RAM使用者的AccessKey ID
                accessKeyId: process.env.ALIBABA_CLOUD_ACCESS_KEY_ID,
                // 從環境變數中擷取RAM使用者的AccessKey Secret
                accessKeySecret: process.env.ALIBABA_CLOUD_ACCESS_KEY_SECRET,
                // 訪問的地區
                regionId: 'cn-beijing',
            });
            const client = new Ecs20140526(config);
            const request = new $Ecs20140526.DescribeRegionsRequest();
            // 建立RuntimeObject執行個體並設定運行參數。
            const runtime = new $Util.RuntimeOptions({
                // 設定開啟重試
                autoretry: true,
                // 設定重試次數
                maxAttempts: 3,
            });
            const resp = await client.describeRegionsWithOptions(request, runtime);
            console.log(resp.headers);
            console.log(resp.body);
        }
    }