Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Coroutine
Per impostazione predefinita, AWS SDK per Kotlin è asincrono. L'SDK per Kotlin utilizza suspend funzioni per tutte le operazioni, che devono essere chiamate da una coroutine.
Per una guida più approfondita alle coroutine, consulta la documentazione ufficiale di Kotlin.
Effettuare richieste simultanee
Il generatore di coroutine asincronoasyncrestituisce un Deferred
Se non ti interessano i risultati (solo che un'operazione è stata completata), puoi utilizzare Launch Coroutine Builder.launchè concettualmente simile a. async La differenza è che launch restituisce un Jobasync restituisce unDeferred.
Di seguito è riportato un esempio di richiesta simultanea ad Amazon S3 utilizzando l'operazione headObject per ottenere la dimensione del contenuto di due chiavi:
import kotlinx.coroutines.async import kotlinx.coroutines.runBlocking import kotlin.system.measureTimeMillis import aws.sdk.kotlin.services.s3.S3Client fun main(): Unit = runBlocking { val s3 = S3Client { region = "us-east-2" } val myBucket = "<your-bucket-name-here>" val key1 = "<your-object-key-here>" val key2 = "<your-second-object-key-here>" val resp1 = async { s3.headObject{ bucket = myBucket key = key1 } } val resp2 = async { s3.headObject{ bucket = myBucket key = key2 } } val elapsed = measureTimeMillis { val totalContentSize = resp1.await().contentLength + resp2.await().contentLength println("content length of $key1 + $key2 = $totalContentSize") } println("requests completed in $elapsed ms") }
Effettuare richieste di blocco
Per effettuare chiamate di servizio da codice esistente che non utilizza coroutine e implementa un modello di threading diverso, puoi utilizzare il generatore di coroutine RunBlocking.
Come suggerisce il nome, questo runBlocking builder lancia una nuova coroutine e blocca il thread corrente fino al suo completamento.
avvertimento
runBlockinggeneralmente non dovrebbe essere usato da una coroutine. È progettato per collegare il normale codice di blocco a librerie scritte in stile suspending (come nelle funzioni e nei test principali).