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