cluster-computing - RabbitMQ 队列设计和扩展

标签 cluster-computing rabbitmq scalability amqp spring-amqp

在我的应用程序中,我有一个可能会变得非常大的队列。
如果我发现我的机器上没有更多空间怎么办?
如何在多台机器上拆分我的队列?
也许 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/

相关文章:

c++ - Wordcount C++ Hadoop 管道不起作用

sql-server - SQL Server 中使用镜像、日志传送、复制和集群的场景有哪些

symfony - 我应该如何构建 dockerized RabbitMQ?

docker - 如何通过 Docker Compose 在 RabbitMQ 上使用 SSL?

java - 识别非集群环境中的序列化问题

c++ - 除了memcached,C++还有成熟的分布式缓存解决方案吗?

symfony - 异步发送电子邮件 : spool, 队列和 cronjob/daemon

新项目的 Java 或单声道

javascript - 解耦过于复杂的 javascript 模块

node.js - Nodejs 回调机制——哪个线程处理回调?