在实际生产环境中,可能会由于网络问题导致消息接收异常产生某种影响,基于这种情况我们需要保障消息的可靠性。
RabbitMQ中的消息可靠性也称为消息补偿,如下图所示,可以保证消息的可靠性。
分为9种种步骤实现消息补偿
1、生产者处理业务逻辑,将数据写入到数据库。
2、生产者将业务数据写入数据库后,向Q1消息队列发送消息数据。
3、生产者向Q1发送完消息数据后,过段时间后,会发送一个延迟消息到达Q3队列。
4、消费者从Q1队列中读取消息数据。
5、读取消息数据后,消费者根据业务逻辑向数据库中写入数据。
6.、消费者充当发布者的身份向Q2队列写入一条确认收到消息的数据,表示消费者已经收到数据并且进行了业务处理。
7、回调检查系统从Q2队列中读取消费者发送的消息数据。
8、回调检查系统再将消息数据写入到MQ数据库中,作用于记录消息传递是否成功的标志。
如果消费者接收消息出现了异常,接收失败了,第三步发送延迟消息就起到了保证消息可靠性的重要环节,生产者会发生一个延迟消息到Q3队列中,回调系统也会从Q3队列中读取延迟消息,延迟消息和正常消息是一模一样的,回调检查系统会把延迟消息的ID与MQ数据库中的消息ID进行比对,如果存在数据那么久不会再做