【发布时间】:2021-02-07 05:44:59
【问题描述】:
场景:
我有一个生产者和消费者,只有一个传输消息的队列。消费者将根据已消费的消息更新 DB 上的值。不应将任何操作并行发送到数据库。所以,我们不应该做任何导致数据库数据并发的事情。我使用prefetch(1) 一次接收一条消息。删除prefetch() 是否会导致多个操作并行发送到数据库?
消费者是否在没有prefetch() 的单线程处理器中处理消息?
【问题讨论】:
-
如果没有更多关于如何编写消费者的详细信息,就无法回答这个问题:RabbitMQ 只是在被要求时传递消息,它无法控制接下来会发生什么。例如,如果它是一个 PHP 脚本,答案将是微不足道的,因为 PHP 没有本机线程;在其他语言中,这取决于您使用的库以及使用方式。
标签: rabbitmq message-queue messagebroker