我有一个服务,它发送消息给多个用户。我调用发送方法在for-each周期,我想并行这个操作,而不等待结果。我写了一些代码,但我需要你的意见,如果我实现它正确。使用Kotlin+ Spring 5。
服务A(单一服务):
fun send(users: List<User>) {
CoroutineScope(Dispatchers.Default).launch {
users.forEach {
launch(SupervisorJob() + MDCContext()) {
val messageText = "Hello, my friend!"
chatMessageSender.send(it, messageText)
}
}
}
}
chatMessageSender -外部服务,通过RestTemplate调用
KotlinPlayground:单击此处
1条答案
按热度按时间iyfjxgzm1#
我只是想指出你的代码的几个部分。
1-如果你想在发送消息的过程中处理异常,你可以在启动块中使用try catch。
2-
launch(SupervisorJob() + MDCContext())
你真的需要MDCContext吗?我猜你没有使用它。3-也许你可以考虑使用Dispatchers.IO而不是Dispatchers.Default。