为了避免常见的并发问题,我使用了单线程php使用者,该使用者使用了一个RabbitMQ队列中的多个消息。
基本上,相同的php脚本已执行X次并等待新消息。
我的问题是:
假设由于我的使用者是单线程的,所以我将预取配置设置为1条消息,这是正确的吗?
因为很明显它一次不会处理多于一条消息...
对吗?
预取只是一些消息,代理会将这些消息放在消费者端,并仅在确认这些消息后才将其删除。现在,如果我们假设客户(消费者)当时正在处理一条消息,那么这个数字prefetch_count并不是很重要。但是,如果客户端在一个线程中使用消息,然后生成新线程-每个线程都处理一条消息,那么显然是另一回事了。因此,可以说多线程确认更像是一个故事。
因为您编写了单线程使用者,所以我很确定您的意思是整个客户端都是单线程的,而不仅仅是“消耗”部分,所以我的直接答案是是可以将其设置为1,但不是必须的,它更多地取决于ACK消息的方式。我只想详细介绍多线程处理部分。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句