更新资料
在Socket.io无法满足要求的Web应用程序中,是否需要使用RabbitMQ?浏览器用户应该能够通过node.js服务器相互通信。其中一位用户编写了一条消息,其他所有用户都将收到该消息。
当您仅具有这些简单要求时,仅使用socket.io就足够了。。仅当您要以受控方式脱机处理(大量)作业时,才需要消息队列。
http://en.wikipedia.org/wiki/Message_queue:
消息队列提供异步通信协议,这意味着消息的发送者和接收者不需要同时与消息队列进行交互。
这句话需要灌输。生产者(一个进程)将作业放入队列,而消费者通过从队列中取出作业进行消费。使用者通常是多个进程,这些进程同时消耗多个作业。消费者无法彼此分辨自己正在消费什么工作。
这使队列成为先进先出(FIFO)数据结构。
我认为这是队列的重要属性。尽管具有像beantalkd这样的高级消息队列,但“先进先出”属性可以为作业赋予优先级。
我希望这完全没有道理;)
我正在实时进行实时Web应用程序开发。
您能更好地解释一下,以便我们给您更好的答案吗?
我不太了解RabbitMQ的工作方式。但是从快速阅读来看,它似乎可以处理消息的发布/订阅。
请参阅下面有关消息队列的报价。让它沉入一会儿。您还可以阅读有关消息队列的WIKI 。
用户(在浏览器中)发布某些内容,而订户(在其他浏览器中)获得该消息。这不是Socket.io正在使用websockets吗?
Socket.io支持许多不同的传输方式(也支持websockets),这应该是因为大多数浏览器都不支持websockets。但是例如,谷歌浏览器已经支持websockets。我相信websockets是未来的交通工具(但还没有!)。当您查看Socket.io的浏览器支持页面时,您会注意到Socket.io确实支持所有主流浏览器(甚至有些古老的浏览器)。令人高兴的是,它将它包装在一个不错的API中。
它们每个都有什么优点/缺点?
您正在将苹果与橙子进行比较,因此进行比较有点奇怪。
兔子MQ
http://www.rabbitmq.com/tutorials/tutorial-one-python.html:
RabbitMQ是消息代理。原理很简单:它接受并转发消息。您可以将其视为邮局:将邮件发送到邮政信箱时,您可以肯定,邮递员会最终将邮件传递给收件人。使用这个比喻,RabbitMQ是一个邮政信箱,一个邮局和一个邮递员。
优点
缺点:
套接字
http://socket.io/:
Socket.IO旨在使每个浏览器和移动设备中的实时应用成为可能,从而模糊了不同传输机制之间的差异。
优点
缺点
Socket.io可以代替RabbitMQ吗?
不,您不能因为它们是完全不同的两件事。您正在将苹果与橙子进行比较。您应该尝试从我引用的站点中了解这两种描述。