2017-05-10 10 views
2

は、以下のFluxプロジェクト・リアクター:各要素の(スロットル)放出を遅らせる方法は?

Flux.range(1, 5) 
    .parallel(10) 
    .runOn(Schedulers.parallel()) 
    .map(i -> "https://www.google.com") 
    .flatMap(uri -> Mono.fromCallable(new HttpGetTask(httpClient, uri))) 

HttpGetTaskは、その実際の実装は無関係である。この場合には、それはHTTPが与えられたURIにGET呼び出しになり、コンテンツ成功した場合を返す呼び出し可能であることを検討してください。

さて、私は人工的な遅延を導入することにより、排出を遅くしたいのですが、最大10件のスレッドがであるようには同時に始めたが、それぞれが、すぐHttpGetTaskが行われるように完了しません。例えば、何のスレッドが3秒前に終了してはならないと言います。どのように達成するのですか?

答えて

2

実際に「3秒以上」であれば内のMonoには、Mono.fromCallable(...).delayElement(Duration.ofSeconds(3))を使用して3秒の遅延を追加できます。

関連する問題