Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

moleculer-agenda

Package Overview
Dependencies
Maintainers
1
Versions
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

moleculer-agenda

Moleculer Framework Addons: Job Scheduling for Agenda

  • 1.0.0
  • latest
  • Source
  • npm
  • Socket score

Version published
Maintainers
1
Created
Source

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.

Keywords

FAQs

Package last updated on 01 Nov 2021

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc