「背圧システム」を作成するのに問題があります。Vertx HttpClient と RxJava を使用しています。外部サービスに対して 6000 のリクエストを行う必要があり、waitingForQueue がいっぱいになるのを避けるために、この外部サービスは送信ほど速く処理できないため、リクエストとレスポンスの間に遅延を置きます。
このジャーニーはバッチ プロセスとして機能するため、1 分かからなくても心配する必要はありません。
ここに私のコード
return from(subGroups)
.flatMap(subGroup -> getProductIdsForSubGroup(subGroup))
.delay(50, TimeUnit.MILLISECONDS)
このメソッドは、このサブグループのリスト (6000) を渡す 24 時間ごとに実行される Observable 間隔から呼び出されます。
しかし、ログを確認した後、リクエスト間に 50 ミリ秒の遅延が見られません
ここに私のログの3つ
{"@timestamp":"2016-11-30T10:32:48.973+00:00","event":"started","requestHost":"localhost","requestMethod":"GET","requestUri":"/v3/comercial?category=T15EB&clientId=ERROR_NOT_SUPPLIED","requestHash":189630582,"level":"INFO","thread_name":"vert.x-eventloop-thread-5"}
{"@timestamp":"2016-11-30T10:32:48.978+00:00","event":"started","requestHost":"localhost","requestMethod":"GET","requestUri":"/v3/commercial?category=T15EE&clientId=ERROR_NOT_SUPPLIED","requestHash":1296199359,"level":"INFO","thread_name":"vert.x-eventloop-thread-5"}
{"@timestamp":"2016-11-30T10:32:48.981+00:00","event":"started","requestHost":"localhost","requestMethod":"GET","requestUri":"/v3/commercial?category=T15EG&clientId=ERROR_NOT_SUPPLIED","requestHash":228306365,"level":"INFO","thread_name":"vert.x-eventloop-thread-5"}
これを達成するために何をする必要があるか考えていますか?.
よろしく。
解決
より良い解決策があれば教えてconcatMap
ください。
return from(subGroups)
.concatMap(subGroup -> Observable.just(subGroup).delay(50, TimeUnit.MILLISECONDS))
.flatMap(subGroup -> getProductIdsForSubGroup(subGroup))