一、消息丢失
- 1.生产者把消息发送到rabbitmq服务端,这个过程发生消息丢失
- 2.rabbitmq服务端收到生产者发过来的消息后,还未持久化宕机而导致消息丢失
- 3.消费者从服务端收到消息还没来得及处理宕机,导致rabbitmq服务端认为该消息已被签收,而实际是丢失
二、生产者到服务端
- 1.rabbitmq提供了一个confirm确认机制,生产者把消息发送给rabbitmq服务端
- 2.服务端收到消息会给生产者返回一个ack的消息
- 3.生产者可以根据ack的消息来确认是否要对消息进行重新发送,确保消息到达rabbitmq服务端
三、服务端
- 1.开启消息持久化
- 2.服务端收到生产者发过来的消息后持久化到磁盘中
- 3.宕机重启也会从磁盘中读取消息
四、服务端到消费端
- 1.消息从服务端到消费者,消费者可以将消息签收的自动确认机制改为手动确认ack方式
- 2.消费者手动调用消息确认方法来表示这个消息已经被签收