Mono Slice с преобразованием данных весной реактивной кассандры - PullRequest
0 голосов
/ 18 февраля 2019

После прочтения новой документации casandra данных весны ( здесь ), он говорит, что теперь есть поддержка Mono<Slice<T>> реактивной кассандры.И это здорово, потому что в моей команде мы хотели использовать своего рода ответную реакцию на наш ответ.Итак, мы рады перейти с Flux<T> на Mono<Slice<T>>, но есть эта проблема, мы выполняем преобразования данных нашего потока с помощью flux.map, но это не представляется возможным с Slice без блокировки.

Например, у нас есть такая функция:

Flux<Location> resp = repository.searchLocations(searchFields).map(this::transformLocation);

Где transformLocation - это функция, которая получает объект базы данных и возвращает более удобный для пользователя объект с более удобными для пользователя данными.Как вы достигнете этого с помощью Mono<Slice<Location>>?

Из того, что я видел в Slice, вы можете получить данные с помощью getContent, но он возвращает список, не будет ли это похоже на блокировку?

1 Ответ

0 голосов
/ 19 февраля 2019

Вы можете использовать список, полученный из getContent() метода , чтобы создать поток, как вы делали раньше.

Mono<Slice<Location>> sliceMono; //this is just another mono on which you can operate

Flux<location> intermediateResp = sliceMono.flatMap(slice -> Flux.fromIterable(slice.getContent()));

//you can now transform this intermediateResp flux as you were doing before, can't you?

Не будет ли это служить вашей цели илитебе нужно что-то еще?

(код был написан без помощи IDE, поэтому используйте его, чтобы понять подход)

...