Версия 3.1 активной зоны реактора ломает существующий код - PullRequest
0 голосов
/ 19 мая 2019

Код ниже взят из книги Learning Spring Boot 2.0 Грега Тернквиста. Он работает с активной зоной реактора 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);

1 Ответ

1 голос
/ 19 мая 2019

Я выложу ответ для всех, кто сталкивается с этим.Просто замените звонок на and() звонком на zipWith():

.flatMap(group -> Mono.just(group.key()).zipWith(group.count()))

Очень странно, что команда реактора внесет решающее изменение в незначительную ревизию.

...