npm install @nestjs/schedule
import { Injectable, Logger } from '@nestjs/common';
import { Cron, Interval, Timeout } from '@nestjs/schedule';
@Injectable()
export class TasksService {
private readonly logger = new Logger(TasksService.name);
constructor(private readonly exampleService: ExampleService) {}
@Cron('45 * * * * *')
handleCron() {
this.logger.debug('该方法将在45秒标记处每分钟运行一次');
}
@Interval(10000)
handleInterval() {
this.logger.debug('每 x ms执行一次');
}
@Timeout(5000)
handleTimeout() {
this.logger.debug('延迟 x ms执行一次');
}
@Interval(10000)
sendEmail() {
this.logger.debug('3');
}
}
参考这个:cron 规范和不同实现
cron是一种规范,不同的包有不同的实现(linux spring node)
Documentation | NestJS - A progressive Node.js framework
* * * * * *
| | | | | |
| | | | | day of week
| | | | months
| | | day of month
| | hours
| minutes
seconds (optional)
@Cron(CronExpression.EVERY_30_SECONDS)
一些常用语法
分布式系统单个直行,用redis锁一下即可
可以用重复代码实现
也可以基于ts的装饰器注解实现
推荐使用: nestjs-simple-redis-lock nestjs简易分布式锁
如果使用nestjs 10以上版本报错,参考package.json overrides强制覆盖版本使用