我有一个Node.js服务器 - 我希望该进程能够监听自身发送的消息 - 这仅用于测试。我遇到的问题是,当向相同的流程发布消息时,用户似乎根本没有收到它。Redis发布/订阅 - 同一个进程监听一个频道
我有这样的设置:
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库中,并清楚地表明我是新手:)这是一个问题,因为异步库一直具有欺骗性。国际海事组织,subscriber.subscribe应该强制你包括一个回调,这将消除欺骗。如果你需要一个单独的回调“sub.on('subscribe')”,那么你可以自己实现一个eventsEmitter,那会更好的IMO。 –