Answer a question

I am setting up a job scheduler using Agenda.js and Node, backed with MongoDB. So far it's working as expected. However, I'm unclear how to schedule a repeating job -- for instance, a job that should run every day at 9am.

"schedule" is used for a one-time scheduling of a job, but not repeats:

agenda.schedule('today at 09:00am CST', 'first job');

"every" works with an interval like "3 minutes", but not with "day at 9:00am"

agenda.every('3 minutes', 'second job');

Since configuration methods are supposedly chainable I also tried this:

agenda.processEvery('24 hours').schedule('day at 09:45am CST', 'second job');

... this did run the task successfully the first time 9:45am CST arrived, but it didn't reset it to run the next day at the same time.

What syntax would I use to run a job EVERY day at 9:00am? And, even better, how can I schedule that to run on Monday - Friday only?

Answers

Ajenda accepts cron format. So you can do something like this

This is repeat Job At 09:00 on every day-of-week from Monday through Friday

job.repeatEvery('0 9 * * 1-5', {
    skipImmediate: true
});

SkipImmediate is Optional. Here is CRON checker for above cron string. Read more about repeatEvery

EDIT

Job is returned when Agenda is made

agenda.define('NAME', async job => {
            job.repeatEvery('0 9 * * 1-5', {
                skipImmediate: true
            });
            await job.save()
        }

Read more about Creating Jobs

Logo

MongoDB社区为您提供最前沿的新闻资讯和知识内容

更多推荐