Node JSjs - 按数组长度和时间进行队列管理



我正在尝试为我构建的微服务处理器添加队列机制,简而言之,处理器从其他服务器获取 id(通过 REST 调用),从数据库添加信息并创建一个具有丰富 id 数据的新对象。 队列管理器应该管理一个 id 数组,并在之后丰富数据

x 毫秒或 y 个 id 的数量。(浓缩将批量完成)

我该怎么做?如何管理队列?

我知道有setInterval()功能很棒,但它只解决了我的时间问题,我如何添加另一个条件来按数组长度进行丰富?

要查看队列何时达到一定长度,我可以想到三种策略来监视长度何时更改:

  1. 触发将队列添加到的onChange通知。确保将项添加到队列的代码始终通过一个特定函数执行,这样就不会有大量随机代码片段修改队列。 然后,在该函数中,在将项添加到队列后,立即在您创建的 EventEmmitter 上触发 onChange 事件。 然后,您的队列管理器可以为 onChange 事件添加侦听器,并在每次修改队列时检查该队列。

  2. 覆盖队列数组的.push()假设您知道项目仅使用.push()添加到队列数组中,您将使用自己的方法覆盖队列数组上的.push()方法,该方法将调用默认推送,然后您可以检查数组的长度以决定是否需要进一步执行任何操作。

  3. 使用 ES6 代理主动监视阵列的长度,并查看阵列何时更改。这里有一个如何做到这一点的示例:https://github.com/gergob/jsProxy/blob/master/04-onchange-object.js 和使用 Proxy 对象检测 Javascript 数组中的更改


目前,听起来您已经知道可以使用计时器,例如setInterval()setTimeout(). 我不清楚你希望你的时间元素如何工作,以便对如何使用它们提出更具体的建议。 最简单的实现可能是每 xx 毫秒轮询一次setInterval()队列,并处理队列中当前的任何项目。 可能有更智能的算法可以监视队列何时从空变为非空,并从该时间点开始setTimeout()

最新更新