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 团队在小改版中做出重大更改,这很奇怪。