RabbitMQ是否在每个入站消息上序列化磁盘?

时间:2013-10-03 21:56:44

标签: rabbitmq

我正在将RabbitMQ评估为我的Web应用程序的异步中间层。我担心的是它会将收到的每条消息写入磁盘,作为一致性模型。是真的还是优化内存中的队列并不时将其序列化为磁盘?

1 个答案:

答案 0 :(得分:5)

您可以将消息标记为持久性或瞬态,并将队列配置为持久或不持久。如果消息是暂时的,或者被发送到非持久队列,则根本不需要将其写入磁盘。

对于发送到持久队列的持久性消息,如果无法立即传递,则只会将消息写入磁盘。至少,这是我从publisher confirms的工作方式推断出来的:一个确认表明RabbitMQ代理已经安全地接受了一条消息,并且当 消息是写入磁盘,将其传递给消费者。

second part of the tutorial中还提到了:

  

此外,RabbitMQ不会为每条消息执行fsync(2) - 它可能只是保存到缓存而不是真正写入磁盘。