サーバーとして Spring リアクティブを使用して、高価な生成を行い、結果を Flux で 1 つずつ返します。これには、リクエストがキャンセルされた場合に生成を停止できるという利点があります (制約がきつすぎる場合など)。私のコードは次のようになります。
public Flux<Entity> generate(int nbrOfEntitiesToGenerate, Constaints constraints) {
return Flux.range(0, nbrOfEntitiesToGenerate)
.map(x -> Generator.expensiveGeneration(constraints)
// .subscribeOn(Schedulers.parallel())
;
}
これは私が望むことの半分しか行いません。expensiveGeneration
キャンセルされたときに次の呼び出しを行いませんが、現在実行中の高価な生成を停止しません。制約が厳しすぎると終了しない可能性があります。どうすればそれができますか。
余分な質問ですが、x エンティティを並列に生成して、スレッドを最大限に活用するにはどうすればよいでしょうか (もちろん、すべての世代を一度に開始する必要はありません)。
前もって感謝します。