问题标签 [bull-queue]

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 投票
1 回答
31 浏览

javascript - 如何在队列中设置“状态”

我有一个函数可以让我加入这样的工作队列:

但在添加到队列之前,我将数据保存在数据库中。我的实体有一个带有一些参数的枚举字段“状态”。

在我的job.process.ts我有我的队列处理器:

以及监控队列中作业的另一个功能:

现在我有一个问题,如何从我的数据库中获取队列中当前作业的 ID 并为数据库中的这条记录设置状态?

0 投票
1 回答
98 浏览

javascript - 添加到 Bull 队列后,对象不再是 Class 的实例

handler我的Fastify路线中,我将一个类的对象添加到我的Bull队列中。在队列的 process 方法中,这个对象不再是类的实例。这是正常的还是我错过了一些(或很多)基础知识?

addQueue.add({dataObj: classObj});addQueue.add(classObj);没有区别。handler打印和方法打印true。为什么是这样?processfalse

我最终要做的是,在process方法中,使用我刚刚传入的对象调用类的方法。我不是 Javascript 背景,所以我想我可能错过了一些基本的东西。任何帮助表示赞赏。

0 投票
0 回答
65 浏览

queue - Bull Queue 重试被推到尾部,而不是头部

使用公牛队列。我有一个限速队列。考虑到速率限制和退避策略,我希望在队列中尽快重试失败的作业。情况似乎并非如此。似乎失败的作业被推送,并将在队列中其他现有作业的后面处理。一个人为的例子:

这总是会在第一次处理后产生作业,然后重试失败的作业。根据公牛的说法,这不应该发生。我的实施错了吗?

0 投票
2 回答
1269 浏览

nestjs - 尝试在 NestJS 中注入 Bull Queue 时无法解决依赖关系

我正在尝试使用 Bull/Redis 实现 Nodemailer 来处理 NestJS 中的电子邮件类型的任务。

我有一个名为的共享模块EmailService,可以将作业添加到我的队列中,为此,它需要注入Queuefrom 'bull'

Nest 无法解析 EmailService (?) 的依赖关系。请确保索引 [0] 处的参数 BullQueue_mailqueue 在 SharedModule 上下文中可用。

我的结构

应用程序模块

nodemailer.module

节点邮件服务

现在这是我的 EmailService,它是 SharedModule 的一部分。

共享模块

我试图按照以下步骤操作:

  1. https://firxworx.com/blog/coding/nodejs/email-module-for-nestjs-with-bull-queue-and-the-nest-mailer/
  2. 在 Typescript 中实现 Bull Queue

我不明白为什么我EmailService不能注入 BullQueue 依赖项。

我在这里缺少什么?

0 投票
1 回答
1086 浏览

node.js - 节点公牛队列错误:缺少作业类型 JOB_NAME 的进程处理程序

我正在创建节点公牛队列并将动态名称作为选项传递给Queue.add function

我正在为上述工作定义如下的进程名称

但是,我得到以下错误

如何正确定义processor动态名称值?

0 投票
2 回答
471 浏览

bull-queue - 公牛在 Redis 中留下的可重复工作

我开始在公牛中使用可重复的工作,一切似乎对我来说都很好。但是,我注意到每次迭代都会在 Redis 中留下一份工作:

  1. “测试:富:重复:7a140b0cf5b3ee29cb164b7c9cc03bc3:1619132310000”
  2. “测试:富:重复:7a140b0cf5b3ee29cb164b7c9cc03bc3:1619132280000”
  3. “测试:富:重复:7a140b0cf5b3ee29cb164b7c9cc03bc3:1619132360000”

而且这个名单还在不断增长。我试图在 process 函数中做一个 job.remove() ,但它抛出了一个错误......我猜无法删除可重复的工作。我假设这些最终会被 Redis 清理干净,但是我可以做一些更积极的事情来保持 Redis 的清洁吗?

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 回答
71 浏览

node.js - Node.JS - Bull - 根本没有得到任何回应

我目前正在更深入地研究队列并找到了公牛包。所以我安装了它并尝试用他们的文档做一些基本的队列工作。

但是,我根本没有得到任何输出......事件根本没有被触发,我也没有从处理队列中获得日志。我做错了什么?我也已经查看了文档并检查了他们在教程中提供的所有内容。还是没有输出。

0 投票
0 回答
42 浏览

node.js - 公牛队列 - 队列工作正常,但突然停止工作

我已经实施了牛队。它工作正常,但现在,队列停止工作。我检查了redis服务器。这些键存在 -

我无法弄清楚发生了什么问题。请在这方面提供帮助。

0 投票
0 回答
46 浏览

javascript - Node.js -bull 队列实现:处理来自 promise 的结果

我正在尝试将队列实现为单独的处理器

process-queue.js即时处理

但是队列completed事件我无法从处理器返回的承诺中读取结果