更新
在Web应用程序中,我是否需要RabbitMQ的一些场景,而Socket.io不能满足要求?浏览器用户应该能够通过node.js服务器相互通信。其中一个用户编写了一条消息,所有其他用户都将收到它。
当您只有这些简单要求时,仅使用socket.io就足够了。仅当您希望离线和受控方式处理作业(重型)时,才需要使用消息queue。
http://en.wikipedia.org/wiki/Message_queue:
消息队列提供异步通信协议,这意味着消息的发送者和接收者不需要同时与消息队列交互。
这句话需要理解。生产者(一个进程)将作业放入队列中,消费者通过从队列中取出作业来消费。大多数情况下,消费者是同时消费多个作业的多个进程。消费者无法互相确定他们正在消费哪些作业。
这使得队列成为先进先出(FIFO)数据结构。
我认为这是队列的一个重要特性。虽然像beanstalkd这样的高级消息队列可以为作业设置优先级,但先进先出属性仍然存在。
希望这有任何意义;)
我正在进行实时的Web应用程序开发。
能否更详细地解释一下,以便我们可以给出更好的答案?
参见下面关于消息队列的引语。让它沉淀一段时间。您也可以阅读有关消息队列的WIKI。
一个用户(在浏览器中)发布了一些内容,订阅者(在其他浏览器中)接收到该消息。这不是Socket.io通过WebSockets所做的吗?
Socket.io支持许多不同的传输方式(包括WebSockets),这是必要的,因为大多数浏览器都不支持WebSockets。但例如Google Chrome已经支持WebSockets。我相信WebSockets是未来的传输方式(但现在还没有!)。当您查看Socket.io的浏览器支持页面时,您会注意到Socket.io支持所有主要浏览器(甚至一些古老的浏览器)。好处是它提供了一个很好的API。
它们各自的优缺点是什么?
你在比较苹果和橙子,这样比较有点奇怪。
RabbitMQ
http://www.rabbitmq.com/tutorials/tutorial-one-python.html:
RabbitMQ是一个消息代理。其主要思想非常简单:它接受并转发消息。你可以把它想象成邮局:当你将邮件投递到邮箱时,你相信邮递员先生最终会将邮件送到收件人手中。使用这个比喻,RabbitMQ就像是一个邮箱、邮局和邮递员。
优点
缺点:
Socket.io
http://socket.io/:
Socket.IO旨在使实时应用程序在每个浏览器和移动设备中都成为可能,模糊了不同传输机制之间的差异。
优点
缺点
Socket.io能取代RabbitMQ吗?
不可以,因为它们是完全不同的东西。你正在比较苹果和橙子。你应该尝试理解我引用的两个网站上的描述。