This is a Nest module for using decorator schedule a job.
Installation
$ npm i --save nest-schedule
Quick Start
import{Injectable,LoggerService}from'@nestjs/common';import{Cron,Interval,Timeout,NestSchedule,defaults}from'nest-schedule';defaults.enable=true;defaults.logger=newNestLogger();defaults.maxRetry=-1;defaults.retryInterval=5000;exportclassNestLoggerimplementsLoggerService{log(message: string): any{console.log(message);}error(message: string,trace: string): any{console.error(message,trace);}warn(message: string): any{console.warn(message);}}
@Injectable()exportclassScheduleServiceextendsNestSchedule{constructor(){super();}
@Cron('0 0 2 * *',{startTime: newDate(),endTime: newDate(newDate().getTime()+24*60*60*1000),tz: 'Asia/Shanghai',})asyncsyncData(){console.log('syncing data ...');}
@Cron('0 0 4 * *')asyncclear(){console.log('clear data ...');awaitdoClear();}
@Timeout(5000)onceJob(){console.log('once job');}
@Interval(2000)intervalJob(){console.log('interval job');// if you want to cancel the job, you should return true;returntrue;}}
Distributed Support
import{Injectable}from'@nestjs/common';import{Cron,NestDistributedSchedule}from'nest-schedule';
@Injectable()exportclassScheduleServiceextendsNestDistributedSchedule{constructor(){super();}asynctryLock(method: string){// If try lock fail, you should throw an error.thrownewError('try lock fail');return()=>{// Release here.}}
@Cron('0 0 4 * *')asyncclear(){console.log('clear data ...');}}
API
Common options or defaults
field
type
required
description
enable
boolean
false
default is true, when false, the job will not execute