Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 来自rabbitMQ队列的批处理消息_Python_Rabbitmq - Fatal编程技术网

Python 来自rabbitMQ队列的批处理消息

Python 来自rabbitMQ队列的批处理消息,python,rabbitmq,Python,Rabbitmq,我的RabbitMQ集群中有一个请求流,多个使用者处理它们。问题是,出于性能原因,每个使用者必须批量处理请求。具体来说,有一个网络IO操作,我可以通过批处理请求来摊销 因此,每个消费者都希望最大化其可以批处理的请求数量,但不增加太多延迟 我可以在消费者收到第一个请求时启动计时器,并继续收集请求,直到发生以下两种情况之一:计时器过期,或收到500个请求 是否有更好的方法来实现这一点-而不阻塞每个消费者?一般来说,“批处理消息”的网络方面是在basic.qos(预回迁大小、预回迁计数)参数的级别上处

我的RabbitMQ集群中有一个请求流,多个使用者处理它们。问题是,出于性能原因,每个使用者必须批量处理请求。具体来说,有一个网络IO操作,我可以通过批处理请求来摊销

因此,每个消费者都希望最大化其可以批处理的请求数量,但不增加太多延迟

我可以在消费者收到第一个请求时启动计时器,并继续收集请求,直到发生以下两种情况之一:计时器过期,或收到500个请求


是否有更好的方法来实现这一点-而不阻塞每个消费者?

一般来说,“批处理消息”的网络方面是在
basic.qos(预回迁大小、预回迁计数)
参数的级别上处理的。在这个方案中,代理将(分别)为消费者发送超出未确认消息范围的一些字节/消息,但客户端库在处理过程中一次向应用程序发送一条消息


为了最大限度地发挥优势,应用程序可以为每条邮件保留
basic.ack()
,并定期发出
basic.ack(delivery tag=n,multiple=True)
以确认所有带有delivery tag的邮件。您建议使用异步回调机制来检索消息还是同步获取?您应该始终使用
basic.consume
,而使用
basic.get
;预取不适用于
basic.get
。如果有意义,您应该以异步样式设计应用程序,因为amqp更适合该模型。