Мы пытаемся использовать Kotlin сопрограммы для асинхронной обработки внутри бэкэнда Spring-Boot.
Проблема в том, что она, кажется, не поддерживает ее хорошо (по крайней мере, стандартная Spring MVC).
В основном, если у нас есть функция, которая выполняет асинхронную логику c:
fun fetchUsersAsync(): Deferred<Users> {
return GlobalScope.async {
...
}
}
, и эта функция используется с await
в какой-то момент службы, который требует поставить suspend
аннотация в вызывающей сервисной функции:
@Service
class MyService {
suspend fun processUsers(): Users {
return fetchUsersAsync().await()
}
}
К сожалению, это невозможно, и единственная ссылка для приостановки работы сервиса была связана с WebFlux.
Кто-нибудь сталкивался с такой же ситуацией? Спасибо.