PHP RabbitMQ Consumer:Prefetch 1

时间:2016-04-27 09:36:19

标签: php rabbitmq

为了避免常见的并发问题,我有单线程php使用者,它使用来自一个rabbitMQ队列的多条消息。

基本上它是相同的php脚本执行X次并等待新消息。

我的问题是:
假设因为我的消费者是单线程,我设置了1条消息的预取配置是正确的吗?

PHP Prefetch Count RabbitMQ

因为很明显,它不会处理一次超过1条消息...
对?

1 个答案:

答案 0 :(得分:2)

预取只是代理将放在消费者端的一些消息,只有在确认这些消息后才会删除它们。现在,如果我们假设客户端(消费者)当时正在处理一条消息,则此数字 prefetch_count 并不重要。但是,如果客户端在一个线程中消费消息,然后产生新线程 - 每个线程处理一条消息,那么它显然是一个不同的故事。所以可以说多线程承认更像是一个故事。
由于您编写了单线程消费者,我很确定您的意思是整个客户端都是单线程的,而不仅仅是“消费”部分,所以我的直接答案你可以将它设置为1,但你不必这样做,这取决于你对消息的确认方式。我只是想详细说明多线程处理部分。