问题标签 [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.
javascript - 如何在队列中设置“状态”
我有一个函数可以让我加入这样的工作队列:
但在添加到队列之前,我将数据保存在数据库中。我的实体有一个带有一些参数的枚举字段“状态”。
在我的job.process.ts
我有我的队列处理器:
以及监控队列中作业的另一个功能:
现在我有一个问题,如何从我的数据库中获取队列中当前作业的 ID 并为数据库中的这条记录设置状态?
queue - Bull Queue 重试被推到尾部,而不是头部
使用公牛队列。我有一个限速队列。考虑到速率限制和退避策略,我希望在队列中尽快重试失败的作业。情况似乎并非如此。似乎失败的作业被推送,并将在队列中其他现有作业的后面处理。一个人为的例子:
这总是会在第一次处理后产生作业,然后重试失败的作业。根据公牛的说法,这不应该发生。我的实施错了吗?
nestjs - 尝试在 NestJS 中注入 Bull Queue 时无法解决依赖关系
我正在尝试使用 Bull/Redis 实现 Nodemailer 来处理 NestJS 中的电子邮件类型的任务。
我有一个名为的共享模块EmailService
,可以将作业添加到我的队列中,为此,它需要注入Queue
from 'bull'
。
Nest 无法解析 EmailService (?) 的依赖关系。请确保索引 [0] 处的参数 BullQueue_mailqueue 在 SharedModule 上下文中可用。
我的结构
应用程序模块
nodemailer.module
节点邮件服务
现在这是我的 EmailService,它是 SharedModule 的一部分。
共享模块
我试图按照以下步骤操作:
- https://firxworx.com/blog/coding/nodejs/email-module-for-nestjs-with-bull-queue-and-the-nest-mailer/
- 在 Typescript 中实现 Bull Queue
我不明白为什么我EmailService
不能注入 BullQueue 依赖项。
我在这里缺少什么?
node.js - 节点公牛队列错误:缺少作业类型 JOB_NAME 的进程处理程序
我正在创建节点公牛队列并将动态名称作为选项传递给Queue.add function
我正在为上述工作定义如下的进程名称
但是,我得到以下错误
如何正确定义processor
动态名称值?
bull-queue - 公牛在 Redis 中留下的可重复工作
我开始在公牛中使用可重复的工作,一切似乎对我来说都很好。但是,我注意到每次迭代都会在 Redis 中留下一份工作:
- “测试:富:重复:7a140b0cf5b3ee29cb164b7c9cc03bc3:1619132310000”
- “测试:富:重复:7a140b0cf5b3ee29cb164b7c9cc03bc3:1619132280000”
- “测试:富:重复:7a140b0cf5b3ee29cb164b7c9cc03bc3:1619132360000”
而且这个名单还在不断增长。我试图在 process 函数中做一个 job.remove() ,但它抛出了一个错误......我猜无法删除可重复的工作。我假设这些最终会被 Redis 清理干净,但是我可以做一些更积极的事情来保持 Redis 的清洁吗?
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 万的最大作业数。
然后我可能不得不放弃这个设计并想出一些完全不同的东西。
需要有经验的人的建议,他们可以指导我如何解决这个问题。
任何形式的帮助表示赞赏。
node.js - Node.JS - Bull - 根本没有得到任何回应
我目前正在更深入地研究队列并找到了公牛包。所以我安装了它并尝试用他们的文档做一些基本的队列工作。
但是,我根本没有得到任何输出......事件根本没有被触发,我也没有从处理队列中获得日志。我做错了什么?我也已经查看了文档并检查了他们在教程中提供的所有内容。还是没有输出。
node.js - 公牛队列 - 队列工作正常,但突然停止工作
我已经实施了牛队。它工作正常,但现在,队列停止工作。我检查了redis服务器。这些键存在 -
我无法弄清楚发生了什么问题。请在这方面提供帮助。
javascript - Node.js -bull 队列实现:处理来自 promise 的结果
我正在尝试将队列实现为单独的处理器
在process-queue.js
即时处理
但是队列completed
事件我无法从处理器返回的承诺中读取结果