首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在nodejs中,如何使用带有bullmq包的Worker在队列中每分钟运行cron作业?

在nodejs中,如何使用带有bullmq包的Worker在队列中每分钟运行cron作业?
EN

Stack Overflow用户
提问于 2022-05-10 12:31:36
回答 1查看 876关注 0票数 1
代码语言:javascript
复制
    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输出。

以下是一次性输出日志:

代码语言:javascript
复制
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.

我每分钟都要输出。

我做错什么了?

EN

回答 1

Stack Overflow用户

发布于 2022-07-04 19:09:31

所以这里最重要的是问问自己什么是可重复的工作。这会解决你的问题。简单地回答这个问题:

可重复的工作实质上是一项延迟的工作。这意味着什么?延迟作业需要QueueScheduler,而不是普通队列。这很可能是你的工作在第一次之后不再重复的原因。

提供更多信息的文档:https://docs.bullmq.io/guide/jobs/repeatable

我希望这能回答你的问题,也对将来可能会遇到同样问题的人来说。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72186369

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档