本文主要是介绍nestjs/schedule nestjs定时任务,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
使用
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');}
}
表达式
参考这个:https://wxyaa.notion.site/cron-76a3fcc84b714202bc799e79779c425d?pvs=4
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 10以上版本,参考package.json overrides使用
overrides 覆盖配置
其它内容
[redisson中的看门狗机制总结](https://www.notion.so/redisson-59cbbd6778e046dc95f2da8d1adc73bd?pvs=21)
这篇关于nestjs/schedule nestjs定时任务的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!