El programa funciona bien cuando tengo la siguiente configuración:
let events = eventstoreClient.readStream( streamName, { fromRevision: END, direction: BACKWARDS, maxCount: 20 } );Sin embargo, el programa se atasca (es decir, no pudo seguir leyendo los flujos/eventos) cuando maxCount se establece en 100 o 1000 o no se proporciona la opción maxCount.
readStream devuelve un flujo legible que almacenará en búfer los eventos internamente hasta que excedan el umbral highWaterMark . Los datos permanecerán en la cola interna hasta que se consuman, y la secuencia dejará de leer temporalmente los eventos del servidor hasta que se consuman los datos actualmente almacenados en el búfer.
Cuando solicita 20 eventos, caben en el búfer interno, por lo que después de 20 eventos, la transmisión se cierra y NodeJS se complace en detener la ejecución. Sin embargo, si solicita 100 o 1000 eventos, una vez que el búfer interno esté lleno, la transmisión no se cerrará ya que todavía hay eventos para leer del servidor y esperará a que los consuma.
Debe extraer los eventos del búfer para permitir que finalice la lectura de transmisión. Esto se puede hacer de varias maneras, por ejemplo:
Iterar a través del vapor:
for await (const { event } of events) { console.log(event); }o agregue un detector de eventos:
events.on("data", (event) => { console.log(event); });Puede leer más sobre el almacenamiento en búfer aquí: https://nodejs.org/api/stream.html#buffering