在我的应用程序中,我有一个可能会变得非常大的队列。
如果我发现我的机器上没有更多空间怎么办?
如何在多台机器上拆分我的队列?
也许 RabbitMQ 哲学是不同的,我应该创建多个队列而不是一个大队列..?
最好的事物,
弗拉维奥
最佳答案
正如您在 RabbitMQ 邮件列表线程 http://rabbitmq.1065348.n5.nabble.com/RabbitMQ-scalability-design-question-td28323.html 上所读到的那样,我想出的解决方案是实现竞争消费者模式(队列中的许多消费者),当检测到特殊消息(带有停止标志)时,会向主题交换发送 STOP 消息。
该停止消息由该队列的“主”消费者接收,该消费者开始轮询 Zookeeper(通过管理器),直到删除某个 zkNode 的所有子节点(在这种情况下使用 Zookpeer 作为队列消费者的注册表)。当所有消费者完成他们的停止阶段后,“主”消费者会执行一些任务并重新启用原始队列消费者向主题交换发送 RESTART 消息(每个消费者正在使用专用队列监听)。
我希望这可以帮助(或“启发”)其他人..
关于cluster-computing - RabbitMQ 队列设计和扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17735414/