RabbitMQ:忽略prefetch()会导致数据并发吗



场景:

我有一个生产者和消费者,只有一个传输消息的队列。使用者将根据已使用的消息更新DB上的值。不应将任何操作并行发送到DB。因此,我们不应该做任何导致数据库上数据并发的事情。我使用prefetch(1)一次接收一条消息。删除prefetch()是否会导致多个操作并行发送到DB?

使用者是否在没有prefetch()的单线程处理器中处理消息?

prefetch是否导致并行

如果我们不考虑单线程批处理操作的情况,我们首先需要知道是什么导致了并行?多个线程正在消耗。

预取值定义通道或消费者上允许的未确认交付的最大数量。

因此,预取只会影响消费者内存中存储的未确认消息的数量。这不涉及消费。

什么配置将导致并行

如果我们有一个通道,它就有一个调度线程,因此所有传入的消息都是串行处理的。实现消费并行的一个明显方法是增加收听渠道和消费者的数量。

尽管rabbitmq有许多版本的客户端,但它们都是根据AMPQ协议编写的,因此没有太大区别。

最新更新