moleculer-agenda
Job Scheduling Mixin for Agenda.
Install
npm install moleculer-agenda --save
Usage
You need Mongo Database, example below use mongodb-memory-server package. You can see more example on examples directory.
const { ServiceBroker } = require('moleculer');
const { MongoMemoryServer } = require('mongodb-memory-server');
const AgendaService = require('../index');
(async () => {
const broker = new ServiceBroker({
logger: console,
logLevel: 'debug',
});
const mongoDB = await MongoMemoryServer.create();
const mongoDBUri = mongoDB.getUri();
broker.logger.info('MongoDB started: ', mongoDBUri);
broker.createService({
name: 'agenda',
mixins: [AgendaService({ db: { address: mongoDBUri } })],
jobs: [{
name: 'log',
handler: () => {
broker.logger.info(`Log me ${new Date().toISOString()}`);
},
}],
});
try {
await broker.start();
await broker.call('agenda.runAt', {
when: 'in 1 minute',
name: 'log',
});
broker.logger.info('Await 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);
}
})();
Actions
runEvery
Runs job name at the given interval
Parameters
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. |
runAt
Schedules a job to run name once at a given time.
Parameters
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 |
runNow
Schedules a job to run name once immediately.
Parameters
Property | Type | Default | Description |
---|
name | String | required | Job name to run. |
data | Any | - | Optional data to run for job |
runDisable
Disables any job name, preventing job from being run.
Parameters
Property | Type | Default | Description |
---|
name | String | required | Job name to disable. |
runEnable
Enables any job name, allowing job to be run.
Parameters
Property | Type | Default | Description |
---|
name | String | required | Job name to enable. |
Test
npm test
In development with watching
npm run ci
License
The project is available under the MIT license.