本章知识点: 如何保证消息100%可靠性发送的技术解决方案。
Springboot 版本 2.3.2.RELEASE ,RabbitMQ 3.9.11,Erlang 24.2
在使用消息队列时,因为生产者和消费者不直接交互,所以面临下面几个问题:
1)要把消息添加到队列中,怎么保证消息成功添加?
2)如何保证消息发送出去时一定会被消费者正常消费?
3)消费者正常消费了,生产者或者队列如何知道消费者已经成功消费了消息?
要解决前面这些问题,就要保证消息的可靠性发送。实现消息的100%可靠性发送,其实就是消费消息成功之后,发送ACK确认消息处理成功,否则自动延时将消息重新发送。当达到一定的重试次数后,将消息发送到失败消息队列,等待人工介入处理。一般生产者和消费者是彼此隔离的,需要通过交换机转发消息到订阅队列,所以生产者无须关注消息是否被处理成功。然而有些应用场景比较特殊,需要确保消息被成功处理,否则需要重新发送,保证消息的100%可靠性发送。
RabbitMQ为我们提供了解决方案,下面以常见的商品管理为例进行介绍,假设新品上架成功