6

在我的应用程序中,我有一个可能会变得非常大的队列。如果我发现我的机器上没有更多空间怎么办?如何在多台机器上拆分队列?也许 RabbitMQ 理念不同,我应该创建多个队列而不是一个大队列..?

最好的,弗拉维奥

4

2 回答 2

1

正如您可以在 RabbitMQ 邮件列表线程http://rabbitmq.1065348.n5.nabble.com/RabbitMQ-scalability-design-question-td28323.html上阅读的那样,我想出的解决方案是实现竞争消费者模式(许多队列中的消费者),当检测到特殊消息(带有停止标志)时,将 STOP 消息发送到主题交换。

该停止消息由该队列的“主”消费者接收,该队列开始轮询 Zookeeper(通过 curator),直到某个 zkNode 的所有子节点都被删除(在这种情况下使用 Zookpeer 作为队列消费者的注册表)。当所有消费者都完成了他们的停止阶段时,“主”消费者会执行一些任务并重新启用原始队列消费者,将 RESTART 消息发送到主题交换(每个消费者都在使用专用队列进行监听)。

我希望这可以帮助(或“启发”)其他人..

于 2013-08-05T12:39:31.467 回答
1

RabbimMQ 提供开箱即用的集群高可用性功能,您只需根据需要对其进行配置。

实际上,AMQP 可以保存任何大小的消息,但在大多数情况下,我猜 99% 的消息最多只有 32Kb。您可以计算估计资源使用量(最小/最大/平均)并进一步决定是否集群。

于 2013-07-19T07:57:40.657 回答