Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我正在评估 RabbitMQ 作为我的 Web 应用程序的异步中间层。我担心的是,它会将收到的每条消息都写入磁盘,作为一致性模型。这是真的还是它优化了内存中的队列并不时将其序列化到磁盘?
您可以将消息标记为持久或瞬态,并将队列配置为持久或不持久。如果消息是瞬态的,或者被发送到非持久队列,则根本不需要将其写入磁盘。
对于发送到持久队列的持久消息,只有在不能立即传递的情况下才会将消息写入磁盘。至少,这是我从发布者确认工作的方式中推断出来的:确认表示消息已被 RabbitMQ 代理安全地接受,并且当消息写入磁盘或传递给消费者。
本教程的第二部分还有一段旁白提到:
此外,RabbitMQ 并不fsync(2)适用于每条消息——它可能只是保存到缓存中,而不是真正写入磁盘。
fsync(2)