为了避免常见的并发问题,我有单线程php使用者,它使用来自一个rabbitMQ队列的多条消息。
基本上它是相同的php脚本执行X次并等待新消息。
我的问题是:
假设因为我的消费者是单线程,我设置了1条消息的预取配置是正确的吗?
因为很明显,它不会处理一次超过1条消息...
对?
答案 0 :(得分:2)
预取只是代理将放在消费者端的一些消息,只有在确认这些消息后才会删除它们。现在,如果我们假设客户端(消费者)当时正在处理一条消息,则此数字 prefetch_count 并不重要。但是,如果客户端在一个线程中消费消息,然后产生新线程 - 每个线程处理一条消息,那么它显然是一个不同的故事。所以可以说多线程承认更像是一个故事。
由于您编写了单线程消费者,我很确定您的意思是整个客户端都是单线程的,而不仅仅是“消费”部分,所以我的直接答案你可以将它设置为1,但你不必这样做,这取决于你对消息的确认方式。我只是想详细说明多线程处理部分。