NodeJS-在Node中将多个读取流与单个写入流一起使用的正确方法是什么?

问题描述

上下文:

一个第三方API,可以根据我提供的令牌为我获取一系列事件。
假设我有5个令牌,我将使用每个令牌,获取该令牌的所有事件(由于分页,将需要多个API调用),然后处理这些事件。
一个令牌的所有事件都需要顺序处理。但是,令牌之间没有序列/顺序。
同样,处理一个令牌事件的错误应中止该令牌的进一步处理。但是,它不应该影响其他令牌事件的处理。
我将objectMode用于读写流。

问题:

为了处理事件,我创建了一个可写流。
但是,我不确定处理读取流的最佳方法是什么。

  • 是否应该创建多个读取流,每个标记一个,然后将它们全部输送到单个写入流?
    const tokens = ['token1','token2'];
    const myEventsWriter = new MyEventsWritable();  // single write stream
    tokens.forEach(token => new MyEventsReadable(token).pipe(myEventsWriter));  // multiple read streams
    
    我对这种方法的担心是,如果有很多令牌(每个令牌都有很多事件),系统将运行异常和/或失败。
  • 是否应该创建一个读取流,该读取流在内部使用另一个令牌来获取事件?
    即创建带有令牌数组的单个读取流。推送完一个令牌的所有事件后,请丢弃该令牌并使用下一个令牌。
    我觉得这可能更容易实现。但是我不确定在读取流实现中添加切换令牌的开销是否正确。
  • 我应该创建多个读取流。一次将一个读取流传送到写入流。并且当一个读取流结束(或遇到错误)时,请解开并销毁该流。然后用管道输送下一个
    我认为这可能是更好的方法。但是,在涉及Node流时,我是一个新手,这种方法感觉相当复杂。我不想由于流没有正确关闭/处理而引入任何内存泄漏。

还是有更好的方法解决这个问题?我正在使用的节点版本是v8.16.0。
我发现的大多数示例都遵循一个简单的read-stream.pipe(transform-stream).pipe(write-stream)示例。
因此,我对如何处理涉及多个读/写流的案例感到非常困惑。欢迎任何指导。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)