CNode

node集群下重复消费redis的过期通知

问答
Jjiazhuoyi发布于7 年前最后回复7 年前2 回复3381 浏览0 收藏

node集群起了服务,每个服务上重复订阅了redis的过期通知,然后当redis的发布过期通知时,会向每个服务发送过期通知吗?如何解决服务重复消费redis的过期通知?

查看回复

回复 (2)

J
jiazhuoyi#1·7 年前

没人回复..........

J
jxycbjhc#2·7 年前

不会,在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);

};

参与回复
登录后即可参与回复。登录