0.4.6 • Published 5 years ago

@dxdeveloperexperience/nest-schedule v0.4.6

Weekly downloads
1
License
MIT
Repository
github
Last release
5 years ago

Description

This is a Nest module for using decorator schedule a job.

Installation

$ npm i --save nest-schedule

Usage

import { Injectable, LoggerService } from '@nestjs/common';
import { Cron, Interval, Timeout, NestSchedule } from 'nest-schedule';

@Injectable()
export class ScheduleService extends NestSchedule {    
  @Cron('0 0 2 * *', {
    startTime: new Date(), 
    endTime: new Date(new Date().getTime() + 24 * 60 * 60 * 1000),
    tz: 'Asia/Shanghai',
  })
  async cronJob() {
    console.log('executing cron job');
  }
  
  @Timeout(5000)
  onceJob() {
    console.log('executing once job');
  }
  
  @Interval(2000)
  intervalJob() {
    console.log('executing interval job');
    
    // if you want to cancel the job, you should return true;
    return true;
  }
}

Distributed Support

import { Injectable } from '@nestjs/common';
import { Cron, NestDistributedSchedule } from 'nest-schedule';

@Injectable()
export class ScheduleService extends NestDistributedSchedule {  
  async tryLock(method: string) {
    // If try lock fail, you should throw an error.
    throw new Error('try lock fail');
    
    return () => {
      // Release here.
    }
  }
  
  @Cron('0 0 4 * *')
  async cronJob() {
    console.log('executing cron job');
  }
}

Global Options

import { LoggerService } from '@nestjs/common';
import { defaults } from 'nest-schedule';

export class NestLogger implements LoggerService {
    log(message: string): any {
        console.log(message);
    }

    error(message: string, trace: string): any {
        console.error(message, trace);
    }

    warn(message: string): any {
        console.warn(message);
    }
}

defaults.enable = true;
defaults.logger = new NestLogger();
defaults.maxRetry = -1;
defaults.retryInterval = 5000;

API

BaseOptions

fieldtyperequireddescription
enablebooleanfalsedefault is true, when false, the job will not execute
maxRetrynumberfalsethe max retry count, default is -1 not retry
retryIntervalnumberfalsethe retry interval, default is 5000
loggerLoggerServicefalsedefault is false, only available at defaults

Cron(expression: string, options?: CronOptions | BaseOptions)

fieldtyperequireddescription
expressionstringtruethe cron expression
options.startTimeDatefalsethe job's start time
options.endTimeDatefalsethe job's end time
options.tzstringfalsethe time zone

Interval(time: number, options?: BaseOptions)

fieldtyperequireddescription
timenumbertruemillisecond
optionsobjectfalsesame as common options

Timeout(time: number, options?: BaseOptions)

fieldtyperequireddescription
timenumbertruemillisecond
optionsobjectfalsesame as common options

Stay in touch

License

NestSchedule is MIT licensed.