1
我有問題可以創建一個「背壓系統」。我正在使用Vertx HttpClient和RxJava。 我需要對外部服務執行6000個請求,並且爲了避免在waitingForQueue中完成,由於這個外部服務不能像我發送那樣快,所以我在請求/響應之間放了一個延遲。Vertx HttpClient和RxJava背壓
由於這個旅程是作爲批處理工作,如果需要一分鐘,不用擔心。
這裏我的代碼
return from(subGroups)
.flatMap(subGroup -> getProductIdsForSubGroup(subGroup))
.delay(50, TimeUnit.MILLISECONDS)
這種方法it's從運行每24h通過分組名單(6000)
但經過檢查我的日誌我看不到延遲一個可觀察的時間間隔調用我的50ms的
這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"}
任何想法我需要做什麼才能做到這一點?
問候。
SOLUTION
我最終使用concatMap
請,如果你有更好的解決辦法,讓我知道
return from(subGroups)
.concatMap(subGroup -> Observable.just(subGroup).delay(50, TimeUnit.MILLISECONDS))
.flatMap(subGroup -> getProductIdsForSubGroup(subGroup))
輝煌的解決方案,我完全忘記了這個選項! – paul