当前位置:  开发笔记 > 编程语言 > 正文

在不同的节点进程之间实现pubsub

如何解决《在不同的节点进程之间实现pubsub》经验,为你挑选了1个好方法。

我正在编写基于nodejs的rest API.

我的API有不同的方法,比如put/friends将用户添加到当前登录用户的朋友列表中.

我想通过不同的方法(推送通知,邮件等)通知其他用户,他已被添加为朋友.我不想在API流程中进行通知,而是想发布另一个nodejs处理的事件(可能甚至在不同的机器上运行),拾取并执行通知工作.

实现此类架构的可接受方法有哪些?这里的关键是我想要不同的 nodejs进程之间的pub/sub模式甚至可能不共享同一台机器,所以我想常规的EventEmitter不会帮助那里.

感谢帮助!



1> 小智..:

    首先想到的是使用@ substackdnode项目.几年前,他写了一篇关于将dnode(一个基于JavaScript的RPC框架)改编成PubSub框架的博客文章.详情请访问:http://substack.net/roll_your_own_pubsub_with_dnode

    似乎Faye也变得流行,你可以在其中启动一个充当消息管理器的nod​​e.js服务器.

    另外,您可以查看使用socket.io和redis,如此处所述.

您还可以尝试使用像PubNub这样的外部实时网络来消除基础架构开销.PubNub最多可以免费使用20个设备(参见定价页面.)他们在node.js API GitHub页面上有一些示例,但基本结构是:

var pubnub = require("pubnub").init({
    publish_key   : "demo",
    subscribe_key : "demo"
});

pubnub.subscribe({
    channel  : "my_channel",
    callback : function(message) {
        console.log( "Friend request notice: ", message );
    }
});

要发送消息,您可以使用类似的发布.

pubnub.publish({
    channel : "my_channel",
    message : 'You are now friends with Bob.'
});

这显然更加简单,可以帮助验证您为(可能)多个服务器选择的Pub/Sub模型.祝好运!

推荐阅读
郑小蒜9299_941611_G
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有