'use strict'; function InitRedisStrategy(agent, name, channel) { class RedisStrategy extends agent.ScheduleStrategy { start() { // 订阅其他的分布式调度服务发送的消息,收到消息后让一个进程执行定时任务 agent.redis.on('message', (c, message) => { if (c === channel) { this.sendOne(message) } }) } } agent.schedule.use(name, RedisStrategy) } // {app_root}/agent.js module.exports = agent => { // class ClusterStrategy extends agent.ScheduleStrategy { // start() { // // 订阅其他的分布式调度服务发送的消息,收到消息后让一个进程执行定时任务 // // 用户在定时任务的 schedule 配置中来配置分布式调度的场景(scene) // // such as mq / redis subscribe // // agent.mq.subscribe(schedule.scene, () => this.sendOne()); // } // } // agent.schedule.use('cluster', ClusterStrategy); agent.messenger.on('egg-ready', () => { agent.redis.subscribe('task1'); agent.redis.subscribe('task2'); agent.redis.subscribe('task3'); }); InitRedisStrategy(agent, 'redis1', 'task1'); InitRedisStrategy(agent, 'redis2', 'task2'); InitRedisStrategy(agent, 'redis3', 'task3'); };