消息队列如何应对消息丢失问题

从三个方面考虑
1、生产者 出问题
2、MQ 出问题
3、消费者消费时 出问题

以kafka为例,结合spring

对于生产者发送时失败

Spring提供了回调接口ProducerListener
在这里插入图片描述
我们在使用kafkaTemplate时,可以关注这个onSuccess和onError方法,加入相关业务逻辑
在这里插入图片描述

Kafka集群 丢失消息

1、kafka副本冗余机制
2、ack 设为 -1 或者ALL,即partition的leader和follower全部获取到消息才给provider返回成功
3、重试机制

consumer消息处理失败

1、kafka有一个自动提交机制,即拉取消息后立即commit,将当前消费者当前topic当前partition的偏移量offset更新。 可以关闭这个自动提交机制,当相关业务处理完后手动commit,这样避免消息没有处理完毕宕机导致消息丢失
https://blog.csdn.net/chaiyu2002/article/details/89472416

发布了343 篇原创文章 · 获赞 24 · 访问量 8万+

猜你喜欢

转载自blog.csdn.net/lbh199466/article/details/104719029