Schedule

2018-11-24 02:14:20

EggJS提供了Schedule,用于执行一些定时任务

EggBorn在EggJS的Schedule基础上进行了增强,主要体现在两方面:

  1. 可编译
  2. 开发简便

下面我们开发一个Schedule,每隔3秒在控制台打印schedule invoked: hello world!

声明Schedule

src/module/test-todo/backend/src/config/config.js

module.exports = appInfo => {
  const config = {};

  config.message = 'hello world';

  ...

  // schedules
  config.schedules = {
    scheduleDemo: {
      interval: '3s',
      type: 'all',
      path: 'test/schedule',
    },
  };

  return config;
};
名称 说明
scheduleDemo Schedule名称
interval 定时间隔,也支持cron
type all/worker
path 需要执行的后端API路由

声明API路由

src/module/test-todo/backend/src/routes.js

{ method: 'post', path: 'test/schedule', controller: test, middlewares: 'inner',
  meta: { instance: { enable: false } },
},
名称 说明
middlewares 指定中间件inner,只允许内部调用
instance.enable 禁止中间件instance

为何要禁止中间件instance?

  • 因为Schedule的执行场景是与实例无关的

添加控制器方法

src/module/test-todo/backend/src/controller/test.js

async schedule() {
  console.log('schedule invoked: ', this.ctx.config.message);
  this.ctx.success();
}


评论: