超级热门的面试八股文

超级热门的面试八股文
帅旋
关注
充电
IT宅站长,技术博主,共享单车手,全网id:arthinking。

消息队列如何避免消息丢失?

发布于 2024-03-13 | 更新于 2024-03-13

这个问题也可以理解为:如何实现消息的可靠投递和可靠的消费

可以自己实现一个本地的事务消息,大致的思路:

  • 本地创建一个发送日志表,提交事务之后立刻向消息队列投递一次消息;
  • 使用消息队列模拟RPC调用,在消费者成功处理消息之后,向省份插着投递成功消费的消息,以便让生产端之道消息已经处理成功了;
  • 生产端定时任务补偿,对于超过固定时间还没有投递成功的消息,进行重新投递,消费端注意做好幂等处理。

具体参考:消息队列#RabbitMQ#如何实现可靠性投递

以上是一个通用的解决方案。

当然,如果你用的是RocketMQ,也可以尝试使用RocketMQ的事务消息来实现:消息队列#RocketMQ#特性#数据完整性与事务消息

但是RocketMQ事务消息也只是实现了消息投递的可靠性,并没有实现保证消息的消费。

本文作者: 帅旋

本文链接: https://www.itzhai.com/columns/faqs/mq/how-to-avoid-message-loss.html

版权声明: 版权归作者所有,未经许可不得转载,侵权必究!联系作者请加公众号。

×
IT宅

关注公众号及时获取网站内容更新。