Aktifkan fitur panggilan asinkron
Di Classic SDK for Go, Anda dapat menggunakan dua metode untuk mengaktifkan fitur panggilan asinkron. Setelah mengaktifkan fitur ini, Anda harus memanggil Shutdown() sebelum dapat mengaktifkannya kembali.
Aktifkan fitur panggilan asinkron saat menginisialisasi
client.import ( "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" ) c := sdk.NewConfig() c.EnableAsync = true // Aktifkan fitur panggilan asinkron. c.GoRoutinePoolSize = 10 // Konfigurasikan jumlah goroutine. c.MaxTaskQueueSize = 20 // Konfigurasikan jumlah maksimum tugas untuk satu goroutine. c.Timeout = 10 * time.Second credential := credentials.NewAccessKeyCredential("acesskeyid", "accesskeysecret") client, err := ecs.NewClientWithOptions("regionid", c, credential)Aktifkan fitur panggilan asinkron saat memanggil
EnableAsync.// Konfigurasikan jumlah goroutine. // Konfigurasikan jumlah maksimum tugas untuk satu goroutine. // Anda hanya dapat memanggil EnableAsync sekali. Jika Anda ingin memanggil EnableAsync lagi, Anda harus memanggil Shutdown() untuk menonaktifkan fitur panggilan asinkron. client.EnableAsync(10, 20)
Mulai panggilan asinkron
Di Classic SDK for Go, Anda dapat menggunakan dua metode untuk memulai panggilan asinkron.
Gunakan saluran untuk mengembalikan respons.
responseChannel, errChannel := client.FooWithChan(request) // ini akan memblokir response := <-responseChannel err = <-errChannelGunakan fungsi callback untuk mengembalikan respons.
blocker := client.FooWithCallback(request, func(response *FooResponse, err error) { // tangani respons dan err }) // Blocker bertipe (chan int) dan digunakan untuk mengontrol sinkronisasi. Jika responsnya adalah 1, operasi berhasil. Jika responsnya adalah 0, operasi gagal. // Jika <-blocker mengembalikan 0, operasi gagal dan pesan kesalahan diteruskan ke fungsi callback melalui err. result := <-blocker
Nonaktifkan fitur panggilan asinkron
Nonaktifkan fitur panggilan asinkron dan tutup goroutine dengan memanggil Shutdown().
client.Shutdown()