Ich versuche RxJS zu verwenden, um ein Skript zu schreiben, um mehrere Hunderte von Protokolldateien zu verarbeiten, von denen jede ungefähr 1 GB ist. Das Skelett des Skripts sieht aus wieWie kann die Parallelität von flatMap eingeschränkt werden?
Rx.Observable.from(arrayOfLogFilePath)
.flatMap(function(logFilePath){
return Rx.Node.fromReadStream(logFilePath)
.filter(filterLogLine)
})
.groupBy(someGroupingFunc)
.map(someFurtherProcessing)
.subscribe(...)
Der Code funktioniert, merkt aber, dass der Filterschritt aller Protokolldateien gleichzeitig starten. Aus Sicht der E/A-Performance des Dateisystems ist es jedoch vorzuziehen, eine Datei nach der anderen zu verarbeiten (oder zumindest die Nebenläufigkeit auf einige Dateien zu beschränken, anstatt alle hunderten von Dateien gleichzeitig zu öffnen). Wie kann ich es in diesem Sinne "funktional reaktiv" umsetzen?
Ich hatte an Scheduler gedacht, konnte aber nicht herausfinden, wie es hier helfen kann.
Ich habe die gleiche Frage, aber mit Rx.NET. Ist es möglich? http://stackoverflow.com/questions/37345516/limiting-concurrent-requests-using-rx-and-selectmany – SuperJMN