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