问题标签 [kue]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
865 浏览

javascript - 考虑时区 Node.js / javascript 如何创建 JS 日期对象

嗨,我正在使用 node.js 和kue,我想将工作推迟到未来的时间,我要做的是传递一个像这样的 js 日期对象

这很好用,但工作在早上 7 点触发,这是因为我的时区是 UTC + 8,所以日期的默认时区是 UTC。

所以

我尝试对 Node.js 使用moment-timezone模块并做类似的事情。

但是我发现当你使用toDate() 它时会忽略时区,所以我被困在这里,我搜索了 2 天,但找不到解决方案。

有什么方法可以实现这一点,请帮助我,在此先感谢。

0 投票
2 回答
346 浏览

javascript - kue - 处理不同文件中的作业

我希望我的 queue.process 函数位于单独的文件中,但module.exports不起作用。

kue.js:

server.js:

没有错误。我还有一个单独的函数排队作业及其工作。问题似乎在于导入 kue.js 文件。

0 投票
2 回答
4354 浏览

node.js - 在 node 中运行后台任务需要什么?

如果我的理解是正确的,处理后台任务是释放 CPU 绑定任务的主线程的好方法。

我不明白的是公牛或 kue 等系统使用什么来在主线程之外运行任务。

他们使用线程吗?它们是否需要整个节点进程分叉?它们会产生子进程吗?

0 投票
1 回答
1547 浏览

javascript - 如何在解析服务器上使用 kue 安排作业?

我有一个使用 Heroku 部署的解析服务器(来自我的 GitHub 存储库)并由 mongoLab 托管。我正在尝试在我的应用程序中发送预定的推送通知,而 kue 似乎是最可行的选择。但是,由于我对它非常陌生,我不确定如何接近它。我相信我已经在我的服务器上正确安装了 kue(通过 GitHub)。现在,我想安排这段代码在未来的某个日期执行:

如果我以正确的方式处理这个问题,那么我需要代码来简单地安排一个作业(上面的代码)在未来的指定时间执行。我没有将代码安排为定期或间隔运行,只是在将来的指定时间运行一次。非常感谢您的回答或任何建议,谢谢!

0 投票
2 回答
545 浏览

heroku - 在 Heroku 上使用 kue-scheduler 和 ParseServer

在使用 heroku redis 插件在 heroku 上运行 kue-scheduler 时,虽然我可以让 kue 作业工作,但似乎 kue-scheduler 需要在 heroku redis 环境中不允许的某些 redis 配置。有没有人在 Heroku 环境中成功运行 kue-scheduler。这是我的 index.js 文件的开头:

这是错误。

问题是 heroku redis 不允许在其 redis 基础设施上配置选项,据我所知。

如果有人成功了,感谢任何建议。

0 投票
1 回答
42 浏览

javascript - 错过预定事件后如何执行代码?

我正在构建一个 MEAN 点名应用程序,教授打开该应用程序,如果有要教的课程,他可以点击它,然后会出现丢失的注册学生。然后,教授可以标记每个在场的学生并单击“开始上课按钮”,之后,任何未经检查的学生及其主管都会收到有关学生缺席的通知。

但是,我的麻烦是在老师没有出现时将其标记为缺席,这意味着他们甚至都没有打开应用程序。

该应用程序设置了课程表,因此它知道例如周一上午 8 点到 10 点应该有一个讲座,但它没有日历功能。

我目前在 node 中实现它的方式是,当我创建每周课程表时,我会在 redis 队列中添加一个通知作业,以便每天进行讲座,这样当老师实际出现时,通知作业被删除。如果没有,则在讲座计划结束后向主管发送通知。

我觉得为每堂课创建许多工作来运行有点笨拙,并且无法很好地扩展。

有没有更好的方法来实现这一点?

提前致谢

0 投票
2 回答
1506 浏览

sails.js - 在sails js中的特定操作上运行后台作业

我正在尝试创建一个在特定事件发生时在后台运行的服务。例如,当用户验证电子邮件时,我希望我的服务能够删除可能的未经验证的重复电子邮件表单数据库。我尝试使用kue来保存我的目的,但我认为它更像是一旦帆起火,服务就会运行?

那么当特定事件发生时如何运行服务呢?任何帮助将非常感激。

谢谢

0 投票
1 回答
641 浏览

node.js - 如何等待 Redis 连接?

我目前正在尝试使用 Node.js Kue 来处理队列中的作业,但我相信我做得不对。

事实上,按照我现在的工作方式,我有两种不同的服务(在这种情况下,我使用 Docker Compose 运行):一个使用 Express 构建的 Web API,将作业发送到队列和一个处理模块。这里的问题在于处理模块。

我将其编码如下:

当我们使用 Node 运行它时,它会坐在那里等待将事物放入队列中以进行处理。

然而有两个问题:

  1. 在运行此模块之前,它需要 Redis 可用。如果我们在没有 Redis 可用的情况下运行它,它会崩溃,因为主机不可访问并结束进程。

  2. 如果 Redis 突然变得不可用,处理模块也会因为无法建立连接而崩溃,进程被杀死。

我怎样才能避免这些问题?

我的猜测是我应该以某种方式让代码“等待”Redis,但我不知道如何做到这一点。

在这种情况下如何做到这一点?

0 投票
1 回答
793 浏览

node.js - 何时将数据库用于作业队列有意义?

我正在设计一个内部公司网站,用户可以在其中提交作业以进行计算。我的设计中的一个重要因素是将作业保留在队列中直到完成,即使出现系统故障也是如此。

互联网似乎反对这个想法,因为它“不是数据库的真正目的”,并且更适合像 Redis 这样的键/值存储(或使用 Redis 的作业队列,如 Node.js 的 Kue)。我想我理解这种设计的目的是不让数据库负担过重,因为您会在作业队列中找到相当短暂的数据。在我的用例中,虽然数据库使用率很低,但似乎数据库提供的数据持久性是我在这里寻找的关键特性。

在我的阅读中,我发现一些键/值存储,如 Redis,具有持久化功能,但它并没有真正构建以确保在系统出现故障时所有数据都可以恢复。

我在这里遗漏了什么或者这听起来对吗?

0 投票
1 回答
1112 浏览

node.js - 在乱序处理消息后“重新排序”消息

我正在研究基本上是一个高度可用的分布式消息传递系统。系统通过 HTTP 或 TCP 从某个地方接收消息,对其执行各种转换,然后将其发送到一个或多个目的地(也使用 TCP/HTTP)。

系统要求发送到给定目的地的所有消息都是有序的,因为某些消息建立在先前消息的内容之上。这限制了我们按顺序处理消息,每条消息大约需要 750 毫秒。因此,例如,如果有人每 250 毫秒向我们发送一条消息,我们将被迫将消息排在彼此后面。这最终在高负载下的消息处理中引入了无法容忍的延迟,因为每条消息可能必须等待数百条其他消息被处理才能轮到它。

为了解决这个问题,我希望能够在不破坏我们按顺序发送它们的要求的情况下并行化我们的消息处理。

我们可以轻松地横向扩展我们的处理。缺少的部分是一种确保即使消息被无序处理,它们也会被“重新排序”并按照接收顺序发送到目的地的方法。我正在努力寻找实现这一目标的最佳方法。

Apache Camel 有一个叫做 Resequencer 的东西可以做到这一点,它包括一个漂亮的图表(我没有足够的代表直接嵌入)。这正是我想要的:接收乱序消息并将它们排序的东西。

但是,我不希望它是用 Java 编写的,而且我需要高可用性的解决方案(即能够抵抗崩溃或系统重启等典型系统故障),我认为 Apache Camel 不提供这种解决方案。

我们的应用程序是用 Node.js 编写的,使用 Redis 和 Postgresql 进行数据持久化。我们将Kue库用于我们的消息队列。尽管 Kue 提供了优先队列,但对于上述用例来说,功能集太有限了,所以我认为我们需要一种替代技术来与 Kue 协同工作来重新排序我们的消息。

我试图在网上研究这个话题,但我找不到我预期的那么多信息。这似乎是那种会有大量文章和实现的分布式架构模式,但我看不到那么多。搜索诸如“消息重排序”、“乱序处理”、“并行消息处理”等内容的解决方案大多只是放松基于分区或主题等的“有序”要求。或者,他们谈论单台机器上的并行化。我需要一个解决方案:

  • 可以以任何顺序同时处理多条消息。
  • 将始终按照它们到达系统的顺序发送消息,无论它们是按什么顺序处理的。
  • 可从 Node.js 使用
  • 可以在 HA 环境中运行(即它的多个实例同时在同一个消息队列上运行而不会出现不一致。)

我们目前的计划对我来说很有意义,但我无法在网上任何地方找到它的描述,它是使用 Redis 来维护按到达时间排序的正在进行和准备发送的消息集。大致来说,它是这样工作的:

  1. 当收到一条消息时,该消息将放在进行中的集上。
  2. 消息处理完成后,该消息将放入准备发送集。
  3. 只要在进行中和准备发送集的前面都有相同的消息,则可以发送该消息并且它会按顺序排列。

我会编写一个小型 Node 库,使用原子 Redis 事务通过优先级队列式 API 实现此行为。但这只是我自己想出来的,所以我想知道:是否还有其他技术(最好使用我们已经使用的 Node/Redis 堆栈)来解决重新排序无序消息的问题? 或者我可以将这个问题用作研究关键字的其他术语吗?谢谢你的帮助!