Я пытаюсь использовать RxJS для написания сценария для обработки нескольких сотен файлов журналов, каждый из которых составляет около 1 ГБ. Скелет сценария выглядитКак ограничить параллелизм flatMap?
Rx.Observable.from(arrayOfLogFilePath)
.flatMap(function(logFilePath){
return Rx.Node.fromReadStream(logFilePath)
.filter(filterLogLine)
})
.groupBy(someGroupingFunc)
.map(someFurtherProcessing)
.subscribe(...)
код работает, но обратите внимание, что стадия фильтрации всех файлов журналов начнется одновременно. Однако с точки зрения производительности IO файловой системы предпочтительнее обрабатывать один файл за другим (или, по крайней мере, ограничивать параллелизм несколькими файлами, а не открывать все сотни файлов за одно и то же время). В этом отношении, как я могу реализовать его «функциональным реактивным способом»?
Я думал о планировщике, но не мог понять, как это может помочь здесь.
У меня есть один и тот же вопрос, но с Rx.NET. Является ли это возможным? http://stackoverflow.com/questions/37345516/limiting-concurrent-requests-using-rx-and-selectmany – SuperJMN