![cover](https://img-blog.csdnimg.cn/img_convert/1f20816e15694cf3b56262c1f87e2a14.png)
RabbitMQ-数据持久化
在控制台中,这个delivery_ mode 的值为2时,就表示这个消息是持久化的。手动发消息的时候,可以选择这个值,可以看到他的枚举。SpringAMQP调用时是默认持久化的。
·
一、持久化类型
1、交换机持久化(SpringAMQP默认)
2、队列持久化(SpringAMQP默认)
3、消息持久化
二、消息持久化
1、纯内存操作
如果采用纯内存操作,那么消息存储达到队列的上限之后,会有一个page out操作,这个操作是将队列中已经有的一部分MQ消息转移到磁盘,给队列腾出空间,使得队列能够继续接收MQ消息,这个转移MQ消息的过程是一个阻塞的过程,转移过程中,队列无法接收MQ消息。
2、持久化消息
SpringAMQP默认采用这种方式,这种方式需要将MQ消息入队的同时,也写一份进入到磁盘中,但是与Page out操作有一定区别,不会阻塞;当队列满了之后,会有一次清空内存的操作,这个操作会使得队列接收消息变慢,但是不至于阻塞。
3、LazyQueue
惰性队列,消息直接写入到磁盘,内存中会保留最近的一部分消息,很少的一部分;当消费者需要消息时,才会到到磁盘中去读取;3.12版本之后,队列都是LazyQueue的模式,无法更改。
更多推荐
所有评论(0)