RabbitMQ如何保证消息不丢失

RabbitMQ 大致有三种场景会发生消息丢失;1)consumer没有接收到消息,消费之前 2)consumer接收到消息,消息暂存内存,还未消费 3)consumer消费时

第一种丢失场景就像我刚刚到达便利店,还没选好买什么商品,这个时候便利店突然断电,无法消费;这种场景下使用Message acknowledgment 机制,就是消费端消费完成要通知服务端,服务端才把消息从内存删除。

第二种场景就像生活中,我到便利店买了东西,正在选购商品时;但是商店的收银机突然坏掉了;这样所有的consumer都暂时不能消费.RabbitMQ 的消息默认存放在内存上面,如果不特别声明设置,消息不会持久化保存到硬盘上面的,如果节点重启或者意外crash掉(还没消费的时候),消息就会丢失。这种场景下可对消息进行持久化处理。

第三种场景就像我买好了东西正要结账处理时收银机坏掉了;这种场景下也是可以使用Message acknowledgment 机制的.

参考文档:https://www.cnblogs.com/flyrock/p/8859203.html

https://blog.csdn.net/weixin_45498465/article/details/105708875

原文地址:https://www.cnblogs.com/LearnSB/p/13441219.html