从三个方面考虑
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