首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Node.js Redis订阅回调未执行

Node.js Redis订阅回调未执行
EN

Stack Overflow用户
提问于 2018-05-30 22:17:52
回答 1查看 341关注 0票数 0

我正在构建一个应用程序,其中我在两个服务(API-网关和通知)之间使用Redis连接。对于这个连接,我使用Redis的pub/sub方法。我使用的库叫做NRP。

问题是,我可以将数据从API网关传递到通知,但API网关没有接收到我需要返回的数据。假设我想要登录,然后API网关将用户名和密码发布到通知。在通知中,登录的所有逻辑都已完成,当一切正常时,我向API网关发回一条消息。

来自API-gateway的代码(其中subchannel和pubchannel作为函数的参数给出):

代码语言:javascript
复制
{
    return new Promise((resolve, reject) => {
                try {
                        this.sub.Subscribe(subchannel, (data, channel) => {

                            let body = data.body;      
                            let message = body.message;     
                            if(data.rmid == data.mid){
                                sub.unSubscribe((nrp)=>{
                                    nrp.quit();
                                    resolve(message);
                                });
                            }

                        }); 
                        const sent = this.sub.publish(pubchannel, {
                        body: {
                                param: params,
                                message: '',
                              }
                        });



                } catch (e) {
                    reject(e);
                }
            });
}

来自上面sub.Subscribe部分的代码,以及订阅发布发生的部分:

代码语言:javascript
复制
Subscribe(pattern, callback)
{
    console.log('Im gonna subscribe');
    console.log(pattern);
    nrp.on(pattern, (data, channel) => {
        console.log('subd on ' + pattern);
       return callback(data, channel);
    });


}

所以问题是,当我在通知服务上发布消息告诉API网关登录成功的时候,它并没有在API网关中触发订阅的回调。通知服务上的代码是正确的,因为如果我在redis-client应用程序上订阅,它就可以工作。如果在redis-client应用程序上发布,它会显示我有一个侦听器,所以Api-Gateway正在侦听。不知何故,回调没有被执行。

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50607035

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档