RabbitMQ - Basic_qos函数以及如何最大化它

时间:2017-04-27 15:46:42

标签: python parallel-processing rabbitmq distributed-computing distributed

我一直在使用RabbitMQ构建分布式网络爬虫。 到目前为止,我一直在使用这个函数,因此每个函数一次只能获得1个请求。

channel.basic_qos(prefetch_count=1)

根据我的理解,无论频道有多少队列,它一次只能处理1条消息。

有没有办法可以最大限度地增加一次处理的邮件数量?我不想让这个prefetch_count静态,而是在给定时间处理尽可能多的消息。

1 个答案:

答案 0 :(得分:0)

如果您没有指定预取(qos),那么RabbitMQ将向您的消费者发送连接可以处理的消息。所以根本不要打电话给basic_qos。

要最大化连接的吞吐量,请不要为每条消息发送确认,而是使用带有multiple = true的basic_ack,并一次确认大批消息。

这带来了风险。如果您的连接中断,您将重新传递大量消息,如果您批量处理,您也将重新处理大量消息。但是,如果您的消费者是网络抓取工具,那么可能发生的最糟糕的情况是它会抓取网站或网页两次,所以没什么大不了的。