首页 星云 工具 资源 星选 资讯 热门工具
:

PDF转图片 完全免费 小红书视频下载 无水印 抖音视频下载 无水印 数字星空

分布式定时任务插件.zip

行业研究 68.79KB 16 需要积分: 1
立即下载

资源介绍:

分布式定时任务插件
# 编写定时任务 例:我们在app/schedule 目录下创建一个 pvSchedule.ts文件 ```js import {AbstractSchedule} from '@umajs/plugin-schedule' export default class PvSchedule extends AbstractSchedule { constructor(app){ super(app) this.scheduleInfo = { // rule:'0 0/1 * * * ?', // 每1分鐘更新一次 // name:'PV', // 定时任务名称 // switch:true, // 开启定时任务 } } /** * 业务实现 */ public task() { // todo task } } ``` ### 配置 1,在config/plugin.config.ts开启 ```js 'schedule': { enable: true, } ``` 2,新建schedule.config.ts,在其中填入配置项 ```js export default [ { task: PvSchedule, // 定时任务类 auto: true, // true 代表自动执行,false代表手动执行 mark:"pv" // 任务标记 }, { ... }] ``` 3,controller 初始化定时任务参数配置 ```js export default class PvSchedule extends AbstractSchedule { constructor(app){ super(app) this.scheduleInfo = { rule:'0 0/1 * * * ?', // 每1分鐘更新一次 name:'PV', // 定时任务名称 switch:true, // true:开启定时任务; false:关闭定时任务 ...app } } /** * 业务实现 */ public task() { // todo task } } ``` ### 任务 - 手动启动定时任务 ```js import { umaTask } from '@umajs/plugin-schedule' umaTask("pv").start() ``` - 自动启动 ```js auto: true ``` - 手动关闭定时任务 ```js umaTask("pv").cancel() ``` ### 定时方式 - Cron风格定时器 (建议使用Cron风格,避免服务器时间不一致) ```js * * * * * * ┬ ┬ ┬ ┬ ┬ ┬ │ │ │ │ │ | │ │ │ │ │ └ day of week (0 - 7) (0 or 7 is Sun) │ │ │ │ └───── month (1 - 12) │ │ │ └────────── day of month (1 - 31) │ │ └─────────────── hour (0 - 23) │ └──────────────────── minute (0 - 59) └───────────────────────── second (0 - 59, OPTIONAL) 6个占位符从左到右分别代表:秒、分、时、日、月、周几 ``` - interval风格定时器,更多配置参考 node-schedule ```js import * as schedule from 'node-schedule'; let rule = new schedule.RecurrenceRule(); rule.second =[0,1,2,3......59] 每秒执行 rule.second =0 每分钟0秒执行 rule.minute =0 每小时30分执行 this.scheduleInfo = { rule, // 每1分鐘更新一次 } ``` ### 集群/分布式部署 执行定时任务 - 插件包含在分布式部署下,需要保证同一个定时任务只能运行一次,所以需要用事物锁来控制; - 插件采用的是分布式事务锁方案,支持单台redis和多台redis方案,基于 ioredis 实现 ```js import * as RedLock from 'redlock' import * as Redis from 'ioredis'; const client1 = new Redis({ host: 'redis1.example.com', port: 6379, family: 4, db: 0, pass: 'xxx', password: 'xxx', }); const client2 = new Redis({ host: 'redis2.example.com', port: 6378, family: 4, db: 0, pass: 'xxx', password: 'xxx', }); this.scheduleInfo= { rule: '0 0/1 * * * ?', // 每1分鐘更新一次 name: 'pv', // 任务名称 switch: true, // 定时任务开启 redLock:new RedLock([client1,client2]), // 采用redis锁 redLockTKL:10000 ,//单位毫秒,锁的生存时间,在该时间内,若锁未释放,强行释放 避免死锁情况 sleep:1000 //单位毫秒,执行任务后主动释放锁的时间 } ``` 免责声明: 1.本资源仅供学习和交流使用,不保证其准确性、完整性、及时性或适用性。 2.本资源仅包含一般信息,不构成专业建议。在使用本资源时,请务必自行研究并谨慎决策。 3.我已尽力确保本资源的正确性和合法性,但不对其准确性、完整性和及时性做出保证。 4.本资源不应用于商业用途。 5.在使用本资源的过程中,用户应自行承担所有风险和责任,并遵守相关法律法规。 6.对于因使用本资源而产生的任何损失或损害,我概不负责。 请确保在使用本资源时仔细阅读并遵守以上免责声明。如果您有任何疑问或需要进一步帮助,请联系我。 资源最后修改时间:2024-09-24 21:32:40 22445350071281 0f63a3e4-5f51-46d4-8c95-b50d3e54b981

资源文件列表:

分布式定时任务插件.zip 大约有18个文件
  1. plugin-schedule-master/.DS_Store 6KB
  2. plugin-schedule-master/tests/config/schedule.config.ts 864B
  3. plugin-schedule-master/tests/config/plugin.config.ts 63B
  4. plugin-schedule-master/tests/plugins/task 52B
  5. plugin-schedule-master/tests/app.ts 680B
  6. plugin-schedule-master/tests/controller/pvSchedule.ts 791B
  7. plugin-schedule-master/tests/controller/index.controller.ts 176B
  8. plugin-schedule-master/tests/controller/redisSchedule.ts 531B
  9. plugin-schedule-master/README.md 4.47KB
  10. plugin-schedule-master/.gitignore 105B
  11. plugin-schedule-master/package-lock.json 333.1KB
  12. plugin-schedule-master/package.json 1.18KB
  13. plugin-schedule-master/.eslintrc.js 1.64KB
  14. plugin-schedule-master/tsconfig.json 440B
  15. plugin-schedule-master/.vscode/launch.json 643B
  16. plugin-schedule-master/src/schedule/index.ts 4.01KB
  17. plugin-schedule-master/src/types/index.ts 765B
  18. plugin-schedule-master/src/index.ts 807B
0评论
提交 加载更多评论
其他资源 定时任务.zip
定时任务
《大话设计模式》Go源码.zip
《大话设计模式》Go源码
(2015)(Python)24种设计模式.zip
(2015)(Python)24种设计模式
常见的设计模式Django撰写.zip
常见的设计模式Django撰写
SpringCloudAlibaba微服务架构实战派,微服务架构最强实战案例分析.zip
SpringCloudAlibaba微服务架构实战派,微服务架构最强实战案例分析
ThinkPhp3.2+mysql+RBAC权限管理系统.zip
ThinkPhp3.2+mysql+RBAC权限管理系统
springboot开发rbac权限管理系统.zip
springboot开发rbac权限管理系统
yii2.0的rbac权限管理.zip
yii2.0的rbac权限管理