MQ如何防止消息丢失

本文来说下MQ如何防止消息丢失

文章目录

  • MQ消息丢失问题
  • 同步的事务一停止等待
  • 同步的事务一连续ARQ
  • 异步的事务—回调机制
  • 本文小结


MQ消息丢失问题

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

MQ如何防止消息丢失_第1张图片


同步的事务一停止等待

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

MQ如何防止消息丢失_第2张图片


同步的事务一连续ARQ

类似于TCP的滑动窗口模型

MQ如何防止消息丢失_第3张图片


异步的事务—回调机制

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

MQ如何防止消息丢失_第4张图片


本文小结

本文介绍了MQ防止消息丢失的几种解决方案。

你可能感兴趣的:(核心知识点,消息队列kafka,java)