我有一个看起来像这样的小端点
val numbers = it.bodyAsString.parseJsonList<Numbers>()
processedNumbers = numberService.process(numbers)
GlobalScope.launch {
sqsService.sendToSqs(processedNumbers)
}
it.response.setStatusCode(204).end()
之所以使用GlobalScope,是因为生产者仅在处理完数字后才需要确认,因此我试图开火并忘记并行的方式以能够立即响应生产者
使用结构化货币实现此目的的“最佳实践”方法是什么?我应该创建自己的范围(例如fireAndForgetScope而不是GlobalScope)吗?
答案 0 :(得分:1)
正如您已经猜到的那样,在这种情况下,创建自己的范围是一个很好的解决方案。
您可以将其定义为控制器的成员:
private val bgScope = CoroutineScope(newFixedThreadPoolContext(4, "background-tasks"))
然后用法与您正在执行的操作非常相似:
val numbers = it.bodyAsString.parseJsonList<Numbers>()
processedNumbers = numberService.process(numbers)
bgScope.launch {
sqsService.sendToSqs(processedNumbers)
}
it.response.setStatusCode(204).end()