是否有必要使用尽可能少的队列和Web消息传递的解决方案

我在论坛中读到,在使用AMQP实现任何应用程序时,必须使用更少的队列。 因此,如果我克隆twitter,我会为每个注册的用户提供一个独特且持久的队列,这是完全错误的吗? 它似乎是最自然的方法,如果没有为每个用户分配一个唯一的队列,那么如何设计这样的东西。

什么是最常用的Web消息传递方法。 我看到RabbitHUb和Rabbit WebHooks,但Webhooks似乎不是一个可扩展的解决方案。 我正在使用Rails和我的AMQP服务器作为守护进程运行。

在RabbitMQ中,队列非常便宜。 它们是有效的轻量级Erlang进程,您可以在单个商用计算机(即我的笔记本电脑)上运行数十到数十万个队列。 当然,每个都会占用一点RAM,但是未使用的最近队列会hibernate ,所以它们会消耗尽可能少的内存。 此外,如果Rabbit的内存运行不足,它会将旧消息分页到磁盘。

以上仅适用于单台机器。 RabbitMQ支持一种轻量级集群 。 当您将多个Rabbit节点加入群集时,每个节点都可以看到其他节点上的队列和交换,但每个节点只运行自己的队列。 所以,你将能够拥有更多的队列! (到Erlang集群的极限,通常是几百个节点)因此,集群形成一个分布在几台机器上的逻辑代理; 客户端连接到它并通过任何节点透明地使用它。

也就是说,为每个用户设置一个持久队列似乎有点奇怪:在AMQP中,当他们在队列中时你无法浏览消息; 您可能只获取/使用将其从队列中取出的消息,并将发布添加到队列末尾。 因此,您可以将AMQP用作消息路由器,但不能将其用作某种消息数据库。

这是一个刚才谈到的主题: http : //lists.rabbitmq.com/pipermail/rabbitmq-discuss/2009-February/003041.html

    Interesting Posts