Node.js Redis подписывается обратный вызов не выполняется - PullRequest
0 голосов
/ 30 мая 2018

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

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

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

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

Код из подпункта. Часть выше, также часть, где подписка напроисходит публикация:

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 прослушивает.Почему-то обратный вызов не выполняется.

1 Ответ

0 голосов
/ 31 мая 2018

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...