本文介紹如何開啟Go SDK Client的並發功能。
開啟 SDK Client 的並發功能
因 Go 語言的並發特性,我們建議您在應用程式層面控制 SDK 的並發請求。
為了方便您的使用,我們也提供了可直接使用的並發調用方式,相關的並發控制由 SDK 內部實現。
package main
import (
"fmt"
"github.com/aliyun/alibaba-cloud-sdk-go/sdk"
"github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth/credentials"
"github.com/aliyun/alibaba-cloud-sdk-go/services/ecs"
"os"
)
func main() {
// 最大並發數,可選,預設5
poolSize := 2
// 可快取的最大請求數,可選,預設1000
maxTaskQueueSize := 5
// 在建立時開啟非同步功能
config := sdk.NewConfig().WithEnableAsync(true).WithGoRoutinePoolSize(poolSize).WithMaxTaskQueueSize(maxTaskQueueSize)
// 初始化credential
credential := &credentials.AccessKeyCredential{AccessKeyId: os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"), AccessKeySecret: os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")}
ecsClient, err := ecs.NewClientWithOptions("cn-beijing", config, credential)
if err != nil {
fmt.Printf("Error : %v\n", err)
return
}
// 也可以在client初始化後再開啟
ecsClient.EnableAsync(poolSize, maxTaskQueueSize)
}