4Manuals

  • PDF Cloud HOME

我应该在基于控制器的Spring Webflux服务中将Flow用作返回类型吗? Download

    春季启动-Couchbase AbstractCouchbaseConfiguration-如何避免覆盖不必要的方法 类型“文件”的表达式“目标”不能作为函数调用 在PCF上部署SOAP服务时进行端点配置 带有mongodb驱动程序3.8.2的Springboot 1.5.7 在测试中使用ConfigurationProperties 如何在导航图中将包含的图设置为startDestination? 如何使用带有自定义入口点的FlutterFragment在我的Android应用中嵌入Flutter布局? 在协程中使用runBlocking会发生什么不好的事情吗? 从Springboot到Postgres的间歇性连接问题 无法从Spring Boot的属性文件中加载密钥,@ Autowired为null

我正在尝试在下一个Spring Boot服务中使用Kotlin coroutines和spring-data-r2dbc(databaseClient)。 我已经熟悉这两个概念,但是随着我们对实现细节的深入研究,我开始问自己这个问题。

在我看到的大多数示例中,每个返回某种集合的端点在迁移到反应性方法时都将返回Flow。

虽然没有其他(非阻塞)方式可以使用Mono / Flux进行操作,因为我们希望将订阅移交给引擎(Webflux),因此Kotlin Flows的情况则大不相同。 Flow的终端操作正在暂停,这使它们本质上无阻塞。 这意味着我可以随时随地以一种非阻塞的方式终止流,例如,使用常规的List。

当然,潜在的热门发布者,反应式传输/协议等可能存在更复杂的场景,但就我而言,这是一种非常传统的服务。我们决定使用反应式方法的唯一原因是它受IO限制:对于每个API调用,我们都需要通过HTTP / REST从多个其他服务中获取数据,然后执行一些数据库查询,然后返回合并的结果。 因此,问题是:将流简化为常规的List,例如在存储库中,将流分散到多个应用程序层(控制器,服务,存储库)是否有意义? >

    suspend fun findByEvent(id: String): List<MyEntity> =
        databaseClient.execute(MY_QUERY)....all().asFlow().toList()

这样我的其余应用程序层甚至对Flow一无所知(整个调用链仍然保持可挂起状态)?

0 个答案:

没有答案



Similar searches
    使用OpenCV进行pycharm非零退出代码时出错(1) IIS将网络驱动器映射到虚拟目录 绘制来自二进制数组[1、0、1、0、0、1、0、1、1、1、0、1]的平方信号? 如何编写使用数字作为参数和数字类型字段的查询? 自动检测附近的蓝牙设备