【发布时间】:2016-08-21 12:27:27
【问题描述】:
为了避免常见的并发问题,我有一个单线程 php 消费者,它们从一个 rabbitMQ 队列中消费多条消息。
基本上相同的 php 脚本执行 X 次并等待新消息。
我的问题是:
假设 因为我的消费者是单线程的我设置了 1 条消息的预取配置是否正确?
因为显然它一次不会处理超过 1 条消息...
正确的?
【问题讨论】:
为了避免常见的并发问题,我有一个单线程 php 消费者,它们从一个 rabbitMQ 队列中消费多条消息。
基本上相同的 php 脚本执行 X 次并等待新消息。
我的问题是:
假设 因为我的消费者是单线程的我设置了 1 条消息的预取配置是否正确?
因为显然它一次不会处理超过 1 条消息...
正确的?
【问题讨论】:
预取只是代理将放置在消费者端并仅在这些消息被确认后删除它们的一些消息。现在,如果我们假设客户端(消费者)当时正在处理一条消息,那么这个数字 prefetch_count 并不是很重要。但是,如果客户端在一个线程中消费消息,然后产生新线程——每个线程处理一条消息,那么显然是另一回事了。所以可以说多线程确认更像是一个故事。
既然你写了单线程消费者,我很确定你的意思是整个客户端都是单线程的,而不仅仅是“消费”部分,所以我的直接回答您是否可以将其设置为 1,但您不必这样做,这更多地取决于您确认消息的方式。我只是想详细说明多线程处理部分。
【讨论】: