¿Cómo limitar la concurrencia de flatMap?
Estoy tratando de usar RxJS para escribir un script para procesar varios cientos de archivos de registro, cada uno de los cuales tiene aproximadamente 1 GB. El esqueleto del guión se parece a
Rx.Observable.from(arrayOfLogFilePath)
.flatMap(function(logFilePath){
return Rx.Node.fromReadStream(logFilePath)
.filter(filterLogLine)
})
.groupBy(someGroupingFunc)
.map(someFurtherProcessing)
.subscribe(...)
El código funciona, pero tenga en cuenta que el paso de filtrado de todos los archivos de registro comenzará simultáneamente. Sin embargo, desde la perspectiva del rendimiento de E / S del sistema de archivos, es preferible procesar un archivo tras otro (o al menos limitar la concurrencia a unos pocos archivos en lugar de abrir todos los cientos de archivos al mismo tiempo). A este respecto, ¿cómo puedo implementarlo de una "manera funcional y reactiva"?
Había pensado en el planificador, pero no pude entender cómo puede ayudar aquí.