import { Queue, Worker, Job } from 'bullmq';
const myQueue = new Queue('firstjob', { connection: redis });
import { autorunJobs } from './processes/job.process';
async function addQueue() {
await myQueue.add(
'autoclosejob',
{
repeat: {
cron: '* * * * *'
},
},
);
}
addQueue();
const worker = new Worker('firstjob', async (job: Job) => {
console.info('Started.');
await autorunJobs();
console.info('Closed.');
//return true;
}, { connection: redis });
worker.run();当我运行这段代码时,它立即成功地执行。但是,在我等待工人在下一分钟内再次运行它之后,它没有运行,我看到的只是一次console.log输出。
以下是一次性输出日志:
Tue, 10 May 2022 12:21:12 GMT | IDM Service | INFO | Started.
dta = "some data"
Tue, 10 May 2022 12:21:12 GMT | IDM Service | INFO | Closed.我每分钟都要输出。
我做错什么了?
发布于 2022-07-04 19:09:31
所以这里最重要的是问问自己什么是可重复的工作。这会解决你的问题。简单地回答这个问题:
可重复的工作实质上是一项延迟的工作。这意味着什么?延迟作业需要QueueScheduler,而不是普通队列。这很可能是你的工作在第一次之后不再重复的原因。
提供更多信息的文档:https://docs.bullmq.io/guide/jobs/repeatable
我希望这能回答你的问题,也对将来可能会遇到同样问题的人来说。
https://stackoverflow.com/questions/72186369
复制相似问题