Я использую Spring реактив в качестве сервера для создания дорогостоящего поколения и возврата результатов в Flux один за другим. Преимущество этого заключается в том, что генерация прекращается, если запрос отменяется (например, из-за ограничений и слишком жестких ограничений). Мой код выглядит следующим образом:
public Flux<Entity> generate(int nbrOfEntitiesToGenerate, Constaints constraints) {
return Flux.range(0, nbrOfEntitiesToGenerate)
.map(x -> Generator.expensiveGeneration(constraints)
// .subscribeOn(Schedulers.parallel())
;
}
Это делает только половину того, что я хочу, я не делаю следующий вызов expensiveGeneration
при отмене, но не прекращает запуск дорогого поколения, которое может никогда не произойти fini sh, если ограничения слишком жесткие. Как я могу это сделать, пожалуйста.
Дополнительный вопрос, если вы знаете, как я могу сгенерировать x сущностей в parralel, чтобы максимизировать использование моих потоков (конечно, без запуска ВСЕХ поколений сразу).
Заранее спасибо.