Вы можете достичь желаемого эффекта, используя exapnd:
@Test
public void usingExpand(){
Request innerData = new Request(null);
Request middleData = new Request(innerData);
Request rootData = new Request(middleData);
Mono.just(rootData)
.expand( t -> Mono.justOrEmpty(t.netxPage))
.flatMap( t -> Flux.fromIterable(t.items))
.subscribe(System.out::println);
}
public static class Request {
List<String> items = new ArrayList<>();
Request netxPage;
public Request(Request netxPage) {
this.items.add(UUID.randomUUID().toString());
this.items.add(UUID.randomUUID().toString());
this.netxPage = netxPage;
}
}
Приведенный выше код должен давать следующий результат:
dc78317c-5552-4723-90db-5392c67655be
32ff12bb-5be1-415e-b481-dab85d9157dd
cf1e3f36-a8e2-414d-90a2-7708eeedc5be
91a6bc14-a396-483d-a66a-80bb98dc1968
c95adae3-8e6f-489b-8a9d-4cea3080e150
d6f8fe01-2c50-4574-958c-ec675331bb25
Два UUID для каждого объекта данных.