Я пытаюсь открыть файл и чтение строк через поток. Затем я бы хотел, чтобы x количество работников одновременно обрабатывала строки. Эти работники могут быть медленными, и поэтому я хотел бы предотвратить чтение всего файла в буферы и использовать память во время ожидания. Flux.parallel , кажется, заставляет обработку толчка, и я не могу понять, как замедлить чтение файла.
Ниже у меня есть до сих пор.
Flux.using(() -> Files.lines(path), Flux::fromStream, stream -> {
System.out.println("Close");
stream.close();
})
.doOnNext(item -> System.out.println("Read " + item))
.onBackpressureBuffer(3)
.parallel()
.runOn(Schedulers.newParallel("z", 2))
.map(item -> {
System.out.println("Process " + item);
try { Thread.sleep(500); } catch (InterruptedException e) {}
return item;
})
.sequential()
.publishOn(Schedulers.single())
.map(item -> {
System.out.println("Write " + item);
return item;
})
.blockLast();
Подробнее здесь: https://stackoverflow.com/questions/796 ... ure-limits