https://kotlinlang.org logo
#coroutines
Title
# coroutines
v

viralshah

08/12/2020, 4:23 PM
I’m running a SQS Message poller in my Spring Boot App and for every message I want it to be launched on a Coroutine something like this. How should I be bridging the gap, GlobalScope? Runblocking? Is there an example of this being done
Copy code
fun processMessages(){
    for (message in messages) {
        val foo = async {processMessage(message)
        val bar = foo.await()? // Is this how we await on a suspending function?
        when (bar) {
            is Outcome.Error -> {// don't delete message, log error}
            is Outcome.Success -> {deleteMessage()}
        }
     }
}

suspend fun processMessage(message): Outcome<Foo>

sealed class Outcome<out T : Any> {

    data class Error(val message: String, val cause: Exception? = null) : Outcome<Nothing>()

    data class Success<out T : Any>(val value: T) : Outcome<T>()
}
p

phldavies

08/12/2020, 4:26 PM
Ideally create your own scope that's aligned with the lifecycle of your listener bean and launch in that?
t

Thiyagu

08/12/2020, 9:40 PM
3 Views