ajs*_*sie 53 amqp rabbitmq websocket node.js socket.io
我正在进行实时的实时Web应用程序开发.
浏览器用户应该能够通过node.js服务器相互通信.其中一个用户写入消息,所有其他用户将获得它.
我不太了解RabbitMQ的工作原理.但是从快速阅读来看,它似乎处理消息的发布/订阅.
用户(在浏览器中)发布内容,订阅者(在其他浏览器中)获取该消息.这不是Socket.io用websockets做的吗?
这是我的问题:
Alf*_*red 66
是否存在我需要RabbitMQ用于Socket.io不足的Web应用程序的场景?浏览器用户应该能够通过node.js服务器相互通信.其中一个用户写入消息,所有其他用户将获得它.
当你只有socket.io这些简单的要求就足够了..当您希望离线并以受控方式处理作业(重)时,您只需要一个消息队列.
http://en.wikipedia.org/wiki/Message_queue:
消息队列提供异步通信协议,这意味着消息的发送方和接收方不需要同时与消息队列交互.
这句话需要沉入其中.生产者(一个进程)将一个作业放入队列,消费者通过从队列中取出作业来消耗.大多数情况下,消费者是同时消耗多个作业的多个进程.消费者无法彼此分辨他们正在消费的工作.
这使得队列成为先进先出(FIFO)数据结构.
这是我认为队列的一个重要属性.First-In-First-Out属性虽然具有像beansstalkd这样的高级消息队列,但您可以优先考虑作业.
我希望这根本没有意义;)
我正在进行实时的实时Web应用程序开发.
你能解释一下,以便我们能给你一个更好的答案吗?
我不太了解RabbitMQ的工作原理.但是从快速阅读来看,它似乎处理消息的发布/订阅.
请参阅下面有关消息队列的引用.让它陷入一段时间.您还可以阅读有关消息队列的WIKI .
用户(在浏览器中)发布内容,订阅者(在其他浏览器中)获取该消息.这不是Socket.io用websockets做的吗?
Socket.io支持许多不同的传输(也是websockets),因为大多数浏览器都不支持websockets.但是,例如Google Chrome已经支持websockets.我相信websockets是未来的传输(但还没有!).当您查看Socket.io的浏览器支持页面时,您会注意到Socket.io确实支持所有主流浏览器(有些甚至是古老的浏览器).好消息是它围绕一个漂亮的API包装.
每个人的优点/缺点是什么?
你正在比较苹果和橙子,所以比较这有点奇怪.
http://www.rabbitmq.com/tutorials/tutorial-one-python.html:
RabbitMQ是一个消息代理.主要思想很简单:接受和转发消息.您可以将其视为邮局:当您将邮件发送到邮箱时,您非常确定Postman先生最终会将邮件发送给您的收件人.使用这个比喻RabbitMQ是一个邮箱,邮局和邮递员.
Socket.IO旨在使每个浏览器和移动设备中的实时应用程序成为可能,模糊不同传输机制之间的差异.
Socket.io可以取代RabbitMQ吗?
不,你不能,因为他们是两个完全不同的东西.您正在将苹果与橙子进行比较.您应该尝试理解我引用的网站的两个描述.
RabbitMQ是一种非常灵活的创建网络拓扑的方法.它是成熟的,受到支持的,来自金融领域(在金融领域,他们长期以来一直在做消息传递).我使用RabbitMQ服务器端,并使用其他协议通过"网关"连接到RabbitMQ.
在幕后,RabbitMQ是用一种名为Erlang的超简洁功能语言编写的.这本身并没什么大不了的,但争论的焦点是,如果你知道自己在做什么,并且可以用较少的代码行说出来,那么它最终会更加可靠和可测试.
顺便说一句:Erlang被Facebook和Twitter用于他们的幕后工作.
现在,RabbitMQ不仅仅是一个网络套接字类型的东西......它基于"保证交付".该功能对于企业情况非常重要.RabbitMQ,或者可以用来扩展...实际上,还有更多...我不是在做正义.
我无法评论node.js,因为我还没有机会玩它.我对RabbitMQ很满意.
re:socket.io(我们正在谈论websockets吗?) - 如果这是针对浏览器的(如上面的帖子所示),你可以将其桥接到RabbitMQ中.即RabbitMQ就是那么灵活.
归档时间: |
|
查看次数: |
23180 次 |
最近记录: |