2015-04-12 63 views
2

我正在研究一个应用程序,其中我有一个监听器在一个rabbit mq队列中。根据消息的类型,听众继续并执行任务。我的问题是我需要一种方法来产生一个新的监听器,如果一个监听器不能应付队列。据我所知,我可以使用rabbitmq json api来查找队列的len,并根据这些信息采取行动。因此,我编写了一个脚本,它使用curl来检查队列长度并生成一个新的侦听器进程。我在这条正确的道路上吗?有没有更好的方法来实现这一目标?我正在寻找一种解决方案,它可以随着负载的增加而达到一定的极限。Auto spawn rabbit mq listener

回答

1

检查RabbitMQ API以查看队列的长度是一种方式,它肯定会起作用。

您应该尝试预测何时加载负载,以便您可以根据需要慢慢增加消费者的数量,以便您不会看到实例产生的突然激增。同时产生多个实例可能会对您的系统造成不必要的负载。

+0

对于我们的系统,我一直在努力定义“负载”。队列长度是我能想出的唯一东西,所以我正在考虑检查实例数量并可能关闭未使用的实例的方法,并且现在就使用它。感谢您的回答。 – darkstar

+0

如果你使用RabbitMQ API,你也可以在''message_stats'''下面看到类似''rate''的东西。作为一个例子,你可以检查并看看传入速率是否很高。如果它高于每秒5条消息,而您只能使用4条消息,那么即使在队列变高之前,您也需要更多消费者。 – eandersson

+0

您还可以比较消费者每秒得到确认的消息数量,而不是发送给RabbitMQ的消息数量。 – eandersson