Я хотел бы выполнять параллельные / асинхронные вызовы базы данных с разбивкой по страницам на каждой странице, возвращая уникальные результаты.Я использую проект-реактор с Java-8.Приведенный ниже код как-то извлекает дубликаты записей на некоторых страницах.Когда я запрашиваю каждую страницу непосредственно в БД, я получаю уникальный набор результатов на каждой странице.
List<Mono<List<User>>> usersMonos = new ArrayList<>();
IntStream.range(1, 5).forEach(i -> {
usersMonos.add(Mono.fromSupplier(() -> {
int from = (1 + (10000 * (i - 1)));
int to = 10000 * i;
List<User> users = userMapper.getPaginatedUser(userId, from, to);
return users;
}));
});
List<User> allPageUsers = Flux.zip(usersMonos, new UserTransformer())
.collectList()
.block()
.stream()
.flatMap(List::stream)
.collect(Collectors.toList());