1、情形一:生产者弄丢了数据
2、 情形二:RabbitMQ 弄丢了数据
就是rabbitmq自己弄丢了数据,这个你必须开启rabbitMq 的吃就好,就是消息写入之后会持久化到磁盘,哪怕rabbitMq自己挂了,恢复之后就会自动读取之前存储的数据,一般数据不会丢。除非极其罕见的是,rabbitMq还没持久化,自己就挂了,可能导致少量数据弄丢失的。 设置持久化有两个步骤,第一个是创建queue 的时候将其设置为持久化的,这样就可以保证rabbitMq 持久化queue 的元数据,但是不会持久化queue里的数据;第二个是发送消息的时候将消息的deliveryMode 设置为2,就是将消息设置为持久化的,此时rabbitMq就会将消息持久化到磁盘上去。必须要同时设置这两个持久化才醒,rabbitmq哪怕是挂了,再次重启,也会从磁盘上从启恢复queue,恢复这个queue里的数据