简介
moleculer-scheduler 是一个基于 moleculer 微服务框架的调度工具,用于实现定时任务。它具有时间精度高、并发能力强等优点,并且使用方便,性能稳定等优点。
安装
可以使用 npm 进行安装:
--- ------- -------------------
快速入门
在使用 moleculer-scheduler 之前,需要先创建一个 Moleculer 服务。以下是一个简单的服务定义:
--- - ------------- - - --------------------- --- - --------- - - ------------------------------- --- ------ - --- --------------- ------- -------- --------- ------- --- ---------------------- ----- ------------- ------- ------------ --------- - -- ------- --------- - ----- - - - - --- -- -- - ----------------- ---- ---- --- ----- -- ----------- - - - --- -- ---- ---------------
在上面的例子中,我们先创建了一个 Moleculer 服务,并且混合了 Scheduler mixin。在服务的 settings 中,我们定义了任务调度器,并且设置了一个定时任务,该任务每 10 秒钟执行一次,输出 "This task will run every 10 seconds." 消息。
配置
moleculer-scheduler 的配置信息是通过在 Moleculer 服务的 settings 属性中设置的。具体配置选项如下:
schedule
type: Object
定义任务调度器。它是一个 key-value 对象,其中 key 为 cron 表达式,value 为需要执行的任务。
cron 表达式是一个时间表达式,它的格式如下:
- - - - - - - - - - - - - - - - - - - - - - - ----- -- -- - -- --------- - - - - ------- -- -- - --- - - - --------- --- - --- - - ----------- ---- - --- - ------------- ---- - ---
下面是一个特例,每天早上 8:30 和下午 14:30 执行任务:
--------- - --- - - - --- -- -- - ----------------- ---- ---- --- -- ---- ----- ------- -- --- -- - - --- -- -- - ----------------- ---- ---- --- -- ----- ----- ------- -- -
timezone
type: String
指定时区。默认使用系统时区。可以使用任何 Moment.js 支持的时区。
下面的例子设置了时区为 'Asia/Shanghai':
--------- ---------------
方法
addTask(cron, handler)
添加一个任务。
cron
,类型为字符串,表示 cron 表达式。handler
,类型为函数,表示需要执行的任务。
下面的例子添加一个每天早上 6 点执行的任务:
--------------- - - - --- -- -- - ----------------- ---- ---- --- -- ---- ----- ------- ---
removeTask(cron, handler)
移除一个任务。
cron
,类型为字符串,表示 cron 表达式。handler
,类型为函数,表示需要执行的任务。
下面的例子移除了前面添加的任务:
------------------ - - - --- -- -- - ----------------- ---- ---- --- -- ---- ----- ------- ---
removeAllTasks()
移除所有任务。
----------------------
事件
moleculer-scheduler 支持以下事件:
$scheduler.task.add
添加任务时触发。
-------------------------------- -- ----- ------- -- -- - ----------------- ----- -- ---- ------------ ---------- ---
$scheduler.task.remove
移除任务时触发。
----------------------------------- -- ---- -- -- - ----------------- ------- -- ---- ------------ ---
示例代码
--- - ------------- - - --------------------- --- - --------- - - ------------------------------- --- ------ - --- --------------- ------- -------- --------- ------- --- ---------------------- ----- ------------- ------- ------------ --------- - --------- - -- ---- - - -- - - - --- -- -- - ----------------- ---- ---- --- -- ---- ----- ------- -- -- ----- - - -- -- - - --- -- -- - ----------------- ---- ---- --- -- ---- -- ----- ---------- -- -- -------- -- - - - --- -- -- - ----------------- ---- ---- --- ----- - -------- - - - --- ---------------
结语
moleculer-scheduler 是一个非常好用的定时任务工具,它能够很好地帮助开发者实现复杂的任务调度需求。在使用时只需要记住 cron 表达式的规则,就可以非常方便地创建定时任务。相比于手写定时任务代码,使用 moleculer-scheduler 可以大大降低开发难度和维护成本。
来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/6006735a890c4f7277583e72