Job Scheduling Mixin for Agenda.
npm install moleculer-agenda --save
You need Mongo Database, example below use mongodb-memory-server package. You can see more example on examples directory.
// Demo: use agenda to define a job and schedule it for next 1 minute.
const { ServiceBroker } = require('moleculer');
const { MongoMemoryServer } = require('mongodb-memory-server');
const AgendaService = require('../index');
// Main routine.
(async () => {
// Create broker.
const broker = new ServiceBroker({
logger: console,
logLevel: 'debug',
});
// Create mongodb memory server.
const mongoDB = await MongoMemoryServer.create();
const mongoDBUri = mongoDB.getUri();
broker.logger.info('MongoDB started: ', mongoDBUri);
// Load my service.
broker.createService({
name: 'agenda',
mixins: [AgendaService({ db: { address: mongoDBUri } })],
jobs: [{
name: 'log',
handler: () => {
broker.logger.info(`Log me ${new Date().toISOString()}`);
},
}],
});
// Bundle it with try and catch.
try {
// Start server.
await broker.start();
// Schedule it.
await broker.call('agenda.runAt', {
when: 'in 1 minute',
name: 'log',
});
broker.logger.info('Await for 2 minutes.');
// Run for 2 minutes.
setTimeout(async () => {
await broker.stop();
await mongoDB.stop();
broker.logger.info('MongoDB is stopped.');
process.exit(0);
}, 120000);
} catch (err) {
broker.logger.error(err.message);
process.exit(1);
}
})();
Runs job name at the given interval
Property | Type | Default | Description |
---|---|---|---|
interval |
String |
required | Run every X interval |
name |
String | Array<string> |
required | Job name or list of job name to schedule every X interval. |
data |
Any |
- | Optional data to run for job |
options |
Agenda.JobOptions |
- | Optional options to run job. |
Schedules a job to run name once at a given time.
Property | Type | Default | Description |
---|---|---|---|
when |
String |
required | When the job will run |
name |
String | Array<string> |
required | Job name or list of job name to schedule every X interval. |
data |
Any |
- | Optional data to run for job |
Schedules a job to run name once immediately.
Property | Type | Default | Description |
---|---|---|---|
name |
String |
required | Job name to run. |
data |
Any |
- | Optional data to run for job |
Disables any job name, preventing job from being run.
Property | Type | Default | Description |
---|---|---|---|
name |
String |
required | Job name to disable. |
Enables any job name, allowing job to be run.
Property | Type | Default | Description |
---|---|---|---|
name |
String |
required | Job name to enable. |
npm test
In development with watching
npm run ci
The project is available under the MIT license.