问题标签 [bull]

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 投票
0 回答
25 浏览

node.js - Bull js中的OnProcess和OnQueueActive有什么区别?

我有一个延迟的交易创建工作。首先,我创建了一个事务,它的状态是已创建。然后它应该被移动到 IN_REVIEW,在这个延迟时间(60 秒)内我可以取消交易。那么,OnProcess 和 OnQueueActive 事件有什么区别呢?和 OnQueueCompleted?现在我通过在 OnProcess 装饰函数中调用 job.moveToComplete 方法来完成我的工作。

0 投票
0 回答
111 浏览

node.js - Node js 公牛队列

当我创建一个不提供 name 的 Bull 队列对象时,它会抛出以下警告并成功使用该作业。

UnhandledPromiseRejectionWarning: TypeError [ERR_INVALID_ARG_TYPE]: 第一个参数必须是 string、Buffer、ArrayBuffer、Array 或 Array-like Object 类型之一。在 Function.from (buffer.js:305:9) 处接收到未定义的类型

但有时由于这个警告,服务器实例会进入不健康状态。确切的行为是什么?如果未给出队列名称,则不应订阅和发布

0 投票
1 回答
411 浏览

node.js - Bulls 队列性能和可扩展性:Queue.add()、Queue.getJob(jobId)、Job.remove()

我的用例是创建动态延迟作业。(我正在使用可用于创建延迟作业的Bulls Queue 。)

根据某些事件,向延迟间隔添加更多延迟(进一步延迟作业)。

由于我找不到任何function更新作业的延迟间隔,我想出了以下步骤:

这几乎解决了我的问题。

但我担心这些操作会发生的规模。

我预计在不久的将来每分钟会有近50K事件甚至更多。

我的队列大小预计会根据唯一的JobId增长。

我期待的不仅仅是:

  • 每日100万次入场
  • 每周约 4-5 百万次入场
  • 10-12 百万每月进入。

此外,在60-70 天后,作业的延迟间隔将达到,并且较旧的作业将被一一删除。

我可以运行多个处理器来处理这些延迟的工作,这不是问题。

我的队列大小将在 60-70 天后稳定下来,我的队列或多或少会有大约 1000 万个工作岗位。

我可以根据需要垂直缩放我的REDIS

但我想了解以下查询的时间复杂度:

如果这些操作中的任何一个是 O(N) 或者QUEUE可以保留一些小于 1000 万的最大作业数。

然后我可能不得不放弃这个设计并想出一些完全不同的东西。

需要有经验的人的建议,他们可以指导我如何解决这个问题。

任何形式的帮助表示赞赏。

0 投票
0 回答
27 浏览

node.js - 带有redis含义的Node.JS公牛排队“未定义”警告

我正在尝试在 Node.js 中使用公牛构建一个简单的排队系统。代码运行得很好。但是当我运行代码时,我不断收到“未定义”警告。我怎样才能停止警告,或者它是我的代码。提前致谢!

警告如下所示:

排队脚本:

0 投票
1 回答
323 浏览

node.js - 由于 Bull 为已完成的作业保留密钥,如何从 redis 运行内存不足和崩溃中恢复?

看来使用 Bull 3.21.1 作为默认配置的工作队列会导致 Redis 在成功运行的情况下无限期地保留键,最终耗尽 Redis 中的内存并导致崩溃。这是一个示例体验,描述。我也有同样的经历。这是另一个,其中解释了虽然 Bull 的默认行为不能在不给现有用户造成破坏性更改的情况下实现无内存泄漏,但可以更好地记录默认行为将无限期保留已完成作业的 redis 密钥,以及配置是为了在 Redis 中获取操作而不泄漏内存。 公牛的文档在撰写此问题时,仍然没有提及此行为、配置点或解决方案。

由于 Bull 的无证默认行为永久保留已完成作业的 redis 密钥而导致生产(或者,更幸运的是,预生产)崩溃,我该如何恢复?

0 投票
0 回答
51 浏览

node.js - 诊断 Bull/Redis 超时问题

我有一个问题,我们有一个应用程序使用 Bull 的 API,该 API 对 redis 进行抽象,并在特定场景中导致 API 超时。我知道原则上我可以使用 redis 和 Bull 来完成大部分操作,但不知道为什么这个特定的 Bull 操作会超时。有没有办法找到诊断问题?Bull 是否可以发出在后台使用的实际 redis 命令?

0 投票
1 回答
236 浏览

javascript - 当处理器仅在备份时终止时,公牛作业不会停止

我正在谈论的代码是下面链接的复制代码


我在代码中有 2 个“状态”(它们都在监听队列全局事件):

  1. 添加一条消息
  2. 收听消息

出于某种原因,只有在工作人员备份时才终止侦听器工作人员时,Bull 作业不会报告为停止。

尽管它应该如文档中所述:

来自事件处理程序中的Bull 事件引用.on('stallled', ...)

GitHub Repro(它包含docker-compose所有设置并附有解释)


编辑:

bulmq上测试并且它有效

0 投票
2 回答
696 浏览

node.js - 如何解决错误读取 ECONNRESET 公牛库

当我在节点 js 中与公牛库排队时出现错误,错误是这样的:

这是我的代码:

0 投票
0 回答
20 浏览

node.js - 在 Cron 时间更改后,Cron 会同时运行,前一次和配置的新时间

代码在Nodejs. Bull库被用于管理 crons。队列是Redis基于的。

每天下午 2 点运行一个 cron。改为下午 3 点。

现在的问题是它现在在下午 2 点和 3 点运行

reminderToPayBillsInterval是在下午 2 点,然后更改为下午 3 点。

Redis 的屏幕截图显示了 2 个条目(在第 5 和第 6 处)。理想情况下,应该只留下 1 个条目。这 2 个条目代表 2pm 和 3pm 的 cron

在此处输入图像描述

早些时候,我预计这是一个云/部署问题,但这也很容易在本地环境中重现。

关于如何解决这种不寻常行为的任何想法/建议。谢谢!

0 投票
0 回答
29 浏览

express - 为什么延迟停止为公牛 redis 工作。代码没变

我的 redis 公牛不等待延迟指定的时间,而是开始工作。