Skip to the content.

消息持久化配置

消息持久化一般分为两重:

持久消息就是当消息一经队列,就会将这个消息存储在磁盘中,顺带也存储在了内存中。而瞬时消息于持久消息不同,只存在磁盘中。所以当队列中内存吃紧时,就会自动把内存中的持久消息删除掉来存放最新的持久消息。

持久层其实由两个部分组成:队列索引(queue index)和消息仓库(message storage)。

队列索引主要是负责消息所在队列的具体位置,以及表明是否被传递和确认的,所以这就是说每个队列都有一个队列索引。

消息仓库是用来存储消息的 key-value 对的,主要用来分享队列公用的数据。

消息既可以存储在队列索引中也可以存储在消息仓库里。而消息仓库有有两种技术上的说法:瞬时,持久(这两者一起被称为消息仓库)。

关于内存消耗

就像前面说的,持久层尽量会让消息移除内存存储到磁盘,但是还是要注意有些是必须要消耗内存的。

消息是可以存储到队列索引上,这里有一些好处和弊端:

好处:

弊端:

https://www.rabbitmq.com/persistence-conf.html