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