moleculer-agenda
v1.0.0
Published
Moleculer Framework Addons: Job Scheduling for Agenda
Downloads
1
Maintainers
Readme
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.
// 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);
}
})();
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.