如何解决RabbitMQ:忽略prefetch是否会导致数据并发? prefetch是否导致平行什么配置将导致并行
场景:
我只有一个生产者和消费者,只有一个队列来传输消息。使用者将根据使用它的消息更新DB上的值。不应将任何操作并行发送到数据库。因此,我们不应该做任何导致数据库上数据并发的事情。我使用prefetch(1)
一次接收一封邮件。删除prefetch()
是否会使多个操作并行发送到数据库?
消费者是否在没有prefetch()
的单线程处理器中处理消息?
解决方法
prefetch
是否导致平行
如果不考虑单线程批处理操作的情况,那么我们首先需要知道导致并行化的原因是什么?多线程消耗。
prefetch值定义了渠道或消费者允许的未确认交付的最大数量。
因此,预取只会影响在用户内存中存储了多少未确认的消息。这不涉及消费。
什么配置将导致并行
如果我们只有一个通道,则它只有一个调度线程,因此所有传入消息都将按顺序处理。实现消费并行性的一个明显方法是增加收听渠道和消费者的数量。
尽管Rabbitmq的客户端版本很多,但它们都是根据AMPQ协议编写的,因此并没有太大的区别。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。