Skip to content

Instantly share code, notes, and snippets.

@olbpetersson
Last active January 24, 2020 22:23
Show Gist options
  • Save olbpetersson/ed9d0bac0540f002fbf961cef4c76248 to your computer and use it in GitHub Desktop.
Save olbpetersson/ed9d0bac0540f002fbf961cef4c76248 to your computer and use it in GitHub Desktop.
fun receiveMessages() = flow {
while(isActive) {
val messages = getMesagesFromSqs() // getMessages here takes 1 second
logger.info("Nr of received messages $nrOfReturnedMessages")
emit(messages)
}
}
}
suspend fun processMessage(flow: Flow<List<Message>>) {
flow.buffer(1). collect {
it.map {
GlobalScope.async {
logger.info("Processing a message $it")
nrOfProcessedMessages++
delay(10000)
}
}.awaitAll()
logger.info("Processed messages: $nrOfProcessedMessages")
}
}
}
private suspend fun getMesagesFromSqs(): List<Message> {
// TODO: Real impl
logger.info("SqsCall to receive messages")
delay(1000)
nrOfReturnedMessages +=10
return (1..10).map {
Message().addAttributesEntry("$it", "$it")
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment