在https://bitbucket.org/HughG/kotlin_coroutine_play/src/master/spring-coro-server/src/main/kotlin/,我有一个简单的Spring Boot Webflux应用程序,在该应用程序中我试图返回(科特琳协程)流程。我松散地基于https://www.baeldung.com/spring-boot-kotlin-coroutines,但是没有使用内存中的@MessagingGateway
提供QueueChannel
的“事件”对象(简单的Kotlin数据),而不是使用存储库作为数据源。具有一个String属性的类)。在这个玩具项目中,频道是通过@Scheduled
方法填充的,该方法每隔几秒钟运行一次。
我想要的行为是,当请求获取当前事件列表时
但是,我尝试过的所有变体都具有以下结果之一。
KotlinNullPointerException
尝试序列化结果(当我使用channelFlow
时,在其中将显式async
/ await
对包装到通道请求周围。< / li>
Flow
明确地收集到List
中,这要求我用runBlocking
包裹整个东西,从而使使用协程/ webflux的意义破灭了,在等待事件时请求线程被阻塞,而不是可以重用。如果任何人有时间看项目(应该使用Gradle进行构建),使用示例端点,并给我一个线索,我将不胜感激。
编辑:顶层构建中还有一个单独的玩具项目,名为coroutine-sort
,出于这个问题的目的,您可以忽略该项目。
编辑:我忘了提,我看了几个相关的问题,但是它们似乎并没有帮助。