1.0.0 • Published 3 years ago

moleculer-agenda v1.0.0

Weekly downloads
-
License
MIT
Repository
github
Last release
3 years ago

moleculer-agenda

Job Scheduling Mixin for Agenda.

unittest Coverage Status Codacy Badge Codacy Badge

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

PropertyTypeDefaultDescription
intervalStringrequiredRun every X interval
nameString | Array<string>requiredJob name or list of job name to schedule every X interval.
dataAny-Optional data to run for job
optionsAgenda.JobOptions-Optional options to run job.

runAt

Schedules a job to run name once at a given time.

Parameters

PropertyTypeDefaultDescription
whenStringrequiredWhen the job will run
nameString | Array<string>requiredJob name or list of job name to schedule every X interval.
dataAny-Optional data to run for job

runNow

Schedules a job to run name once immediately.

Parameters

PropertyTypeDefaultDescription
nameStringrequiredJob name to run.
dataAny-Optional data to run for job

runDisable

Disables any job name, preventing job from being run.

Parameters

PropertyTypeDefaultDescription
nameStringrequiredJob name to disable.

runEnable

Enables any job name, allowing job to be run.

Parameters

PropertyTypeDefaultDescription
nameStringrequiredJob name to enable.

Test

npm test

In development with watching

npm run ci

License

The project is available under the MIT license.