node集群下重复消费redis的过期通知
发布于 5 年前 作者 jiazhuoyi 2831 次浏览 来自 问答

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);

};

回到顶部