RabbitMQ:忽略prefetch是否会导致数据并发? prefetch是否导致平行什么配置将导致并行

问题描述

场景:

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

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

解决方法

prefetch是否导致平行

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

prefetch值定义了渠道或消费者允许的未确认交付的最大数量。

因此,预取只会影响在用户内存中存储了多少未确认的消息。这不涉及消费。

什么配置将导致并行

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

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

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...