【问题标题】:Node.js - Queue management by array length and by timeNode.js - 按数组长度和时间进行队列管理
【发布时间】:2017-12-15 16:09:52
【问题描述】:

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

之后丰富数据

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

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

我知道有 setInterval() 函数很棒,但它只解决了我的时间问题,我怎样才能添加另一个条件来通过数组长度进行丰富?

【问题讨论】:

标签: javascript arrays node.js queue


【解决方案1】:

要查看您的队列何时达到一定长度,我可以考虑三种策略来监控长度何时发生变化:

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

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

  3. 使用 ES6 代理来主动监控数组的长度并随时查看它的变化。这里有一个如何做到这一点的示例:https://github.com/gergob/jsProxy/blob/master/04-onchange-object.jsDetecting changes in a Javascript array using the Proxy object p>


就目前而言,您似乎已经知道可以使用诸如setInterval()setTimeout() 之类的计时器。我不清楚您究竟希望您的时间元素如何工作,以便就如何使用这些元素提出更具体的建议。最简单的实现可能是每 xx 毫秒使用setInterval() 轮询队列并处理当前队列中的任何项目。可能有更智能的算法可以观察队列何时从空变为非空,并从该时间点开始setTimeout()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-19
    • 2015-05-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多