Node.js Redis обратный вызов подписки не выполняется

Я создаю приложение, в котором я использую соединение Redis между двумя службами (API-шлюз и уведомления). Для этого я использую метод Redis pub / sub. Библиотека, которую я использую, называется NRP.

Проблема в том, что я могу передавать данные из шлюза API в уведомления, но данные, которые мне нужны, шлюз API не получает. Представьте, что я хочу авторизоваться, тогда API-шлюз публикует имя пользователя и пароль для уведомлений. В уведомлениях выполняется вся логика входа в систему, и когда все в порядке, я отправил сообщение обратно на API-шлюз.

Код из API-шлюза (где subchannel и pubchannel задаются в качестве параметров функции):

{
    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 выше, а также части, где происходит подписка на публикацию:

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, он показывает, что у меня есть 1 прослушиватель, поэтому Api-Gateway прослушивает. Как-то не выполняется обратный вызов.


person Gisrou8    schedule 30.05.2018    source источник


Ответы (1)


Так я понял это. По-видимому, мне нужно json-кодировать сообщение, прежде чем я его отправлю, иначе библиотека nrp не заберет его.

person Gisrou8    schedule 31.05.2018