project-reactor - reactor-core 3.1 版破坏了现有代码
问题描述
下面的代码来自Learning Spring Boot 2.0
Greg Turnquist 的书。它与 reactor-core 版本 3.0.7 一起运行。它不会与 3.1.0 或更高版本一起编译。在 3.0.7 中,该Mono.just().and()
方法返回一个 Mono<reactor.util.function.Tuple2<T, T2>>
. 在 3.1.0 中,它返回一个Mono<Void>
.
这是一个非常糟糕的,在一个小版本中的破坏性变化。我需要做什么才能使此代码在 3.1.0 及更高版本下运行?
Flux.just("alpha", "bravo", "charlie")
.map(String::toUpperCase)
.flatMap(s -> Flux.fromArray(s.split("")))
.groupBy(String::toString)
.sort((o1, o2) -> o1.key().compareTo(o2.key()))
.flatMap(group -> Mono.just(group.key()).and(group.count()))
.map(keyAndCount ->
keyAndCount.getT1() + " => " + keyAndCount.getT2())
.subscribe(System.out::println);
解决方案
我会为遇到此问题的其他人发布答案。只需将调用替换为and()
调用zipWith()
:
.flatMap(group -> Mono.just(group.key()).zipWith(group.count()))
很奇怪,reactor 团队会在一个小修改中做出重大改变。
推荐阅读
- c - Union / Struct (ARM) - 内存空间分配
- r - StatET 中“rgdal”的包加载失败
- linux - 为什么 lspci 不显示扩展配置空间?
- c# - 如何在ef core中获取具有条件顺序的实体
- spring - 为什么在模型中不能(总是)访问 Spring MVC 模型属性?
- css - 滚动捕捉动画不适用于 safari 和 mozilla
- r - gt 表中的字体在 Rshiny 应用程序中不起作用
- javascript - 单击父级时在菜单中显示/隐藏子级(使用纯 JavaScript)
- python - python中列表的深拷贝问题
- makefile - 如何在 buildroot 中设置“BR2_PACKAGE_HOST_ENVIRONMENT_SETUP”