reactor-core 3.1 版破坏了现有代码
reactor-core version 3.1 breaks existing code
下面的代码来自 Greg Turnquist 的书 Learning Spring Boot 2.0
。它 运行s 与 reactor-core 版本 3.0.7。它不会与版本 3.1.0 或更高版本一起编译。在 3.0.7 中 Mono.just().and()
方法 returns a Mono<reactor.util.function.Tuple2<T, T2>>
。在 3.1.0 中 returns a 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);
我会 post 为遇到此问题的任何其他人提供答案。只需将对 and()
的调用替换为对 zipWith()
:
的调用
.flatMap(group -> Mono.just(group.key()).zipWith(group.count()))
Reactor 团队在小改版中做出重大更改,这很奇怪。
下面的代码来自 Greg Turnquist 的书 Learning Spring Boot 2.0
。它 运行s 与 reactor-core 版本 3.0.7。它不会与版本 3.1.0 或更高版本一起编译。在 3.0.7 中 Mono.just().and()
方法 returns a Mono<reactor.util.function.Tuple2<T, T2>>
。在 3.1.0 中 returns a 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);
我会 post 为遇到此问题的任何其他人提供答案。只需将对 and()
的调用替换为对 zipWith()
:
.flatMap(group -> Mono.just(group.key()).zipWith(group.count()))
Reactor 团队在小改版中做出重大更改,这很奇怪。