[Nestjs] 集成定时器以及使用方法

简介: 在后台开发中,我们经常遇到定时的需求,比如每天早上八点推送日志,推送待办,推送天气预报等。接下来简单介绍Nestjs集成定时器的简单使用方法!

在后台开发中,我们经常遇到定时的需求,比如每天早上八点推送日志,推送待办,推送天气预报等。接下来简单介绍Nestjs集成定时器的简单使用方法!


在 NestJS 中集成定时器可以使用 @nestjs/schedule 模块,它提供了一种简单而强大的方式来执行定时任务。下面是集成定时器的步骤:


安装 @nestjs/schedule 模块:使用 npm 或者 yarn 安装 @nestjs/schedule 模块。

npm install --save @nestjs/schedule

配置模块:在你的 NestJS 应用的根模块(通常是 app.module.ts)中导入 ScheduleModule 并添加到 imports 数组中。

import { Module } from '@nestjs/common';
import { ScheduleModule } from '@nestjs/schedule';
import { AppController } from './app.controller';
import { AppService } from './app.service';
@Module({
  imports: [ScheduleModule.forRoot()],
  controllers: [AppController],
  providers: [AppService],
})
export class AppModule {}


创建定时任务:在任何一个可注入类(比如服务)中创建定时任务。首先,使用 @Injectable() 装饰器将该类标记为可注入。然后,使用 @Cron() 装饰器来指定定时任务的执行时间。可以使用 Cron 表达式或者预定义的字符串(如 '0 * * * *' 表示每小时的整点)。

import { Injectable } from '@nestjs/common';
import { Cron } from '@nestjs/schedule';
@Injectable()
export class MyTaskService {
  @Cron('0 * * * *') // 每小时的整点执行
  handleCron() {
    console.log('定时任务每小时执行一次');
  }
}

使用定时任务:在需要使用定时任务的地方,比如控制器或者其他服务中,将定时任务的类注入进来,并调用其方法。

import { Controller, Get } from '@nestjs/common';
import { MyTaskService } from './my-task.service';
@Controller('cats')
export class CatsController {
  constructor(private readonly myTaskService: MyTaskService) {}
  @Get()
  findAll(): string {
    this.myTaskService.handleCron(); // 执行定时任务方法
    return 'This action returns all cats';
  }
}


这时我们启动服务,定时器就会正常触发了!


更多跟定时器相关的API请查阅官方文档

相关文章
|
算法
GSEA 富集分析原理分析
本分分享了自己学习参考多篇 关于GSEA 原理的博客文献后总结的个人理解,以供参考学习
1359 0
|
8月前
|
机器学习/深度学习 人工智能 自然语言处理
构建AI智能体:三十八、告别“冷启动”:看大模型如何解决推荐系统的世纪难题
协同过滤是推荐系统中广泛使用的技术,其核心思想是利用用户行为数据发现相似用户或物品进行推荐。摘要包括:1)协同过滤基于用户历史行为数据,通过计算相似度(如余弦相似度、皮尔逊相关系数)预测用户偏好;2)主要分为基于用户(寻找相似用户群体)和基于物品(发现相似物品)两种方法;3)面临冷启动、数据稀疏性等挑战,可通过混合推荐(结合内容特征)和矩阵分解等技术解决;4)典型应用包括电商猜你喜欢和流媒体推荐;5)结合大语言模型可增强语义理解能力,提升推荐准确性。
982 9
|
敏捷开发 人工智能 Cloud Native
2025年强大的多视图项目管理工具推荐【实用+全面解析】
多视图项目管理工具是现代团队协作的重要利器,支持甘特图、看板、日历等多种视图模式,满足不同角色需求。此类工具显著提升团队灵活性、透明度和协作效率,尤其适合远程办公和跨部门协作场景。国内外主流工具包括板栗看板、飞书多维表、明道云等,各具特色。使用时需注意避免视图切换混乱,建议制定统一视图规范。未来这类工具将向智能推荐视图方向发展,成为团队提升效率的关键武器。
462 3
|
SQL 存储 缓存
Fluss 实战:用 Partial Update 构建实时宽表的新范式
传统流式数据管道通过多表 Join 构建宽表,如实时推荐引擎需整合用户偏好、购买记录等8个数据源,但此方法在大规模场景下状态管理复杂、资源消耗高且调试困难。Fluss 提出部分更新方案,基于主键将各数据源独立写入共享宽表,避免复杂 Join 操作。示例中,通过 Flink SQL 创建推荐、曝光、点击等表,并逐步插入数据实现宽表构建。最终,借助 Fluss 的高效合并机制,输出包含最新信息的统一视图,提升可扩展性和维护性。
586 8
Fluss 实战:用 Partial Update 构建实时宽表的新范式
|
12月前
|
供应链 小程序 API
微信小程序API集成京东库存,移动端销量暴涨!
在数字化时代,微信小程序与京东库存系统集成成为提升移动端销量的关键策略。本文详解如何通过API实现库存实时同步、优化用户体验,推动销量增长50%以上,并结合实际案例与代码示例,为企业提供可落地的解决方案。
|
Devops 测试技术 持续交付
软件测试中的自动化与持续集成:最佳实践与挑战
在快速迭代的软件开发周期中,自动化测试和持续集成(CI)已成为提高软件质量和加速产品上市的关键策略。本文探讨了自动化测试和CI的实施如何帮助开发团队提前发现缺陷、缩短反馈循环,并确保代码质量。我们将深入分析自动化测试的策略选择、工具应用以及面临的挑战,同时提供一些克服这些挑战的最佳实践。
743 27
|
前端开发 UED 开发者
React 滚动监听 Scroll Listener
本文介绍React中实现滚动监听的方法,涵盖基本概念、常见问题及解决方案。通过监听`window`对象的`scroll`事件,开发者可以在用户滚动时触发自定义逻辑。文章详细探讨了冗余调用、组件卸载时未清理事件监听器、滚动位置不一致等常见问题,并提供了防抖、节流、保存滚动位置等解决方案。同时,强调了跨浏览器兼容性和性能优化的重要性,帮助开发者在实际项目中更好地实现滚动监听功能。
405 17
|
关系型数据库 MySQL
MySql 计算两个日期的时间差函数
MySql计算两个日期的时间差函数 MySql计算两个日期的时间差函数TIMESTAMPDIFF用法: 语法: TIMESTAMPDIFF(interval,datetime_expr1,datetime_expr2) 说明: 返回日期或日期时间表达式datetime_expr1 和datetime_expr2the 之间的整数差。
13945 1
|
运维 关系型数据库 MySQL
【运维面试100问】(三)说说你在故障排除方面的经历_运维面试故障排查类面经
【运维面试100问】(三)说说你在故障排除方面的经历_运维面试故障排查类面经
【运维面试100问】(三)说说你在故障排除方面的经历_运维面试故障排查类面经
|
存储 Python
Python Logging 限制文件大小
Python Logging 限制文件大小
349 0

热门文章

最新文章