消息队列如何防止消息丢失

329 阅读1分钟

概述

由于网络问题,我们很难保证生产者发送得消息能100%到达消息队列服务器,也就是说有消息丢失得可能性,因此,生产者就必须具有消息丢失检测和重发机制,也就是我们常说得消息队列得事务机制。 不可能把可靠性得保证全部交给TCP,TCP只保证了传输层得可靠传输,但是无法保证与应用层得交互是否出错,TCP无法给应用层任何反馈,因此必须在应用层处理差错。

同步的事务---停止等待

所谓停止等待协议就是没发送完一组数据后,等待对方确认并且收到确认后,在发送下一组数据。

image.png

同步的事务--连续的ARQ

类似于TCP滑动窗口模型

image.png

异步的事务---回调机制

生产者在发送消息的时候,注册一个回调机制,这样生产者就不用停下来等待确认了,而是可以一直持续发送消息,当消息到达消息队列服务器的时候,服务器便会调用生产者注册的回调函数,告知生产者消息是成功还是失败,进而进一步处理,提供并发量。