从列表中创建通量是响应式编程的优化解决方案吗?

我有一个阻塞数据存储,它返回列表。为了反应,我应该将这个列表转换为通量(或单声道,取决于返回值)然后处理吗?

列表有另一个列表。我可以使用 Stream 处理临时值或使用 Flux.fromIterable 将其转换为 Flux 吗?

我试图了解最佳实践以及反应式编程在哪些方面会产生最佳性能。


浮云间
浏览 101回答 1
1回答

慕姐8265434

Mono那么 a和 a有什么区别呢Flux?不同之处在于 aFlux是 a&nbsp;List<Mono>(为简单起见)。什么是Mono?它是 T 类型的东西。那么这对你来说意味着什么。好吧,如果你获取 aList<T>你可以把它放在 a 中Mono<List<T>,或者你可以把它放在 a 中Flux<T>。如果您使用Flux#fromIterable列表中的每个项目放置此列表,那么列表中的每个项目都会变成一个Mono,并且Flux会在可用时发出该项目。因为你有一个返回整个列表的阻塞调用,List<T>如果你把它放在 a 中,Mono订阅者将在一个大的发射中获得整个列表。如果它是一个非常大的列表,它可能会给 带来压力,subscriber因为发布者可能会在一大块中发布一个巨大的列表,比如 1 000 000 个项目。如果将大清单放入Flux罐头subscriber限制中,并要求服务以更受控制的方式发出物品,例如分 10 批次,每批 100,000 件物品。所以我个人建议将列表放在Flux.但是这些都不会显着提高您的应用程序的性能。subscribers它更多的是调用可以获得的功能。为防止您的应用程序出现严重减速,重要的是您的阻塞调用是使用其自己的线程进行的。Schedulers.elastic()这可以通过使用为长期任务生成新线程来实现。然后在默认 60 秒后终止该线程。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java