node集群下重复消费redis的过期通知
node集群起了服务,每个服务上重复订阅了redis的过期通知,然后当redis的发布过期通知时,会向每个服务发送过期通知吗?如何解决服务重复消费redis的过期通知?
2 回复
没人回复…
不会,在agent.js 里定义,多看看egg文档就行
‘use strict’;
module.exports = function(agent) {
const dbIndx = agent.config.redis.clients.clientSub.db;
const subscribeTopic = __keyevent@${dbIndx}__:expired
;
agent.messenger.on('egg-ready', () => {
if (agent.config.redis.app) {
agent.redis.get('clientSub').subscribe(subscribeTopic, (err, result) => {
if (err) {
throw err;
}
console.info(result, `subscribe:${subscribeTopic} succeed`);
});
}
});
class CustomStrategy extends agent.ScheduleStrategy {
start() {
if (agent.config.redis.app) {
agent.redis.get('clientSub').on('message', (channel, message) => {
this.sendOne([ channel, message ]);
});
}
}
}
agent.schedule.use('redispush', CustomStrategy);
};