2
我正在評估RabbitMQ作爲我的Web應用程序的異步中間層。我擔心的是,它會將它收到的每條消息寫入磁盤,作爲一致性模型。這是真的,還是它會優化內存中的隊列並將其序列化爲磁盤?RabbitMQ是否在磁盤上序列化每個入站消息?
我正在評估RabbitMQ作爲我的Web應用程序的異步中間層。我擔心的是,它會將它收到的每條消息寫入磁盤,作爲一致性模型。這是真的,還是它會優化內存中的隊列並將其序列化爲磁盤?RabbitMQ是否在磁盤上序列化每個入站消息?
您可以將消息標記爲持久或瞬態,並將隊列配置爲持久或不持久。如果消息是暫時的,或者發送到非持久隊列,則根本不需要寫入磁盤。
對於發送到持久隊列的持久消息,如果消息不能立即傳遞,則只會將消息寫入磁盤。至少,這是我從publisher confirms的工作方式推斷出的結果:確認表示消息已被RabbitMQ代理安全地接受,並且在或者消息被寫入磁盤時發生,或它是傳遞給消費者。
還有一個預留,其中提到,second part of the tutorial:
而且,RabbitMQ的並不爲每個消息做
fsync(2)
- 它可能只是保存到緩存,並沒有真正寫入到磁盤。