У меня есть один сервер Node.js - я хотел бы, чтобы процесс прослушивал сообщения, отправленные от себя - это только для тестирования. Проблема, с которой я столкнулась, заключается в том, что при публикации сообщения в тот же процесс подписчик, похоже, вообще не получает его.Redis pub/sub - тот же процесс, прослушивающий один канал
У меня есть эта установка:
var redis = require('redis');
var rcPub = redis.createClient();
var rcSub = redis.createClient();
var message = String('testing123');
rcSub.subscribe('[email protected]_overall_health');
rcSub.on('message', function (channel, msgs) {
console.log(channel,msgs);
});
rcPub.publish('[email protected]_overall_health', message);
У меня есть один клиент Redis, который действует в качестве абонента и один в качестве издателя, который, как вы должны это сделать, но по каким-то причинам сообщения не являются принимается. Есть ли какое-то ограничение, которое процесс не может прослушать сообщения, которые он публикует? Кажется, это не имеет смысла. Я могу проверить, что этот код более или менее прав, потому что другие процессы, прослушивающие один и тот же канал, получили сообщение.
круто, спасибо, будет пытаться это, когда я получаю для работы в понедельник :) –
попробовал, что вы говорите, кажется правильным, спасибо, что поняли это. эта проблема, которую я создал для себя, существует для всех видов библиотек pub/sub и ясно показывает, что я новичок здесь :) это проблема, хотя из-за того, что асинхронные библиотеки постоянно обманчивы. IMO, абонентская подписка должна заставить вас включить обратный вызов, который устранит обман. если вам нужен отдельный callback "sub.on ('subscribe')", то вы можете сами реализовать eventEmitter, это будет намного лучше ИМО. –