qbd*_*qbd 1 spring flux project-reactor spring-webflux
假设我有一个Flux包含许多(数十亿个字符串)的输入,如下所示:
这样的字符串有数十亿个,它们无法放入内存中,这就是我想使用反应式方法的原因。
流已排序。现在我想要的是通过前 3 个字符创建一系列有序字符串组:
这Flux最终会出现 HTTP 响应,这意味着所有“app”项目必须在“bib”项目开始之前输出。
如果不使用,Flux我可以使用有序属性并将项目收集到准备好的存储桶中(每个存储桶的字符串数量将适合内存) - 每当前缀发生变化时,我将刷新存储桶并开始收集新的前缀。有序流的一大优点是我知道一旦遇到新的前缀,旧的就不会再出现了。
但使用Flux我不知道如何做到这一点。将会.groupBy()返回Flux,Flux但我认为在尝试将其序列化到 HTTP 响应输出流时这不会起作用。
这几乎是教科书式的用例windowUntilChanged()。
在你的情况下,你想要提取的“键”是字符串的前3个字母,所以你可以做类似的事情,flux.windowUntilChanged(str -> str.substring(0,3))这会给你一个Flux<Flux<String>>,其中内部通量开始和结束于你的前3个字母的变化细绳。当然,您可能需要添加一些额外的逻辑来处理长度小于 3 个字符的单词,但我会将其作为练习留给读者:-)
(我知道您在问题中提到过它,但只是为了澄清并为了其他人找到这个答案 -只有当流中的传入元素已经按字母顺序排序时,这才有效。)
| 归档时间: |
|
| 查看次数: |
489 次 |
| 最近记录: |