SpringBoot 消息队列RabbitMQ 消息可靠性 数据持久化 与 LazyQueue
介绍
在默认情况下,RabbitMQ会将接收到的信息保存在内存中以降低消息收发的延迟
- 一旦MO宕机,内存中的消息会丢失
- 内存空间有限,当消费者故障或处理过慢时,会导致消息积压,引发MQ阻塞
在消息队列运行的过程中,出现问题导致服务的重启等都回造成信息的丢失。这时候就需要去持久化即使重启了没消费完的数据也不会丢失。
交换机持久化
在创建交换机时应该选择持久化交换机,否者就是临时交换机重新启动会就没了。
队列持久化
使用LazyQueue可以让数据持久化的性能更加的好
LazyQueue介绍
从RabbitMQ的3.6.0版本开始,就增加了LazyQueue的概念,也就是惰性队列。
- 接收到消息后直接存入磁盘而非内存(内存中只保留最近的消息,默认2048条)
- 消费者要消费消息时才会从磁盘中读取并加载到内存支持数百万条的消息存储
- 支持数百万条的消息存储
在3.12版本后,所有队列都是LazyQueue模式,无法更改