【发布时间】:2020-07-11 03:37:46
【问题描述】:
我正在尝试使用
cron-cluster 和 redis
在 Node.js 上。我们正在运行具有不同角色(生产、登台、测试)和相同代码库的多台服务器。它们都连接到同一个 Redis 实例。
如何让cron-cluster 在每个角色上只运行一次?
目前,它只在整个机队(生产、登台、测试)中选择一台服务器并在那里运行所有内容。
【问题讨论】:
我正在尝试使用
cron-cluster 和 redis
在 Node.js 上。我们正在运行具有不同角色(生产、登台、测试)和相同代码库的多台服务器。它们都连接到同一个 Redis 实例。
如何让cron-cluster 在每个角色上只运行一次?
目前,它只在整个机队(生产、登台、测试)中选择一台服务器并在那里运行所有内容。
【问题讨论】:
cron-cluster 库也有同样的问题。 要解决它,您应该在初始化实例时传递一个唯一键。例如:
const ClusterCronJob = require('cron-cluster')(redisClient, { key: leaderKey }).CronJob;
其中{ key: leaderKey }可以取如下:
const leaderKey = process.env.NODE_ENV;
【讨论】: