写点什么

一种消息消费失败的处理方案

发布于: 2020 年 05 月 07 日

场景

在生产环境中,经常会遇到,我们在接受对方发送过来的MQ之后,由于我们的处理异常,但是kafka集群误以为我们正常消费,导致消息丢失的场景。



解决方案

通常情况下,消息的发送方不是我们自己。有两种解决方案。



1.自行组装消息,重新消费

将接受的消息进行重新组装成自己的方法参数格式,在try catch之中,重新去调用方法消息。

优点:无第三方服务介入。复杂性降低。

缺点:如果说消息体本身有问题,比如说,参数格式异常之类,会导致消息消费陷入死循环。

2.异步重消费

引入Redis,消费失败之后,在catch里,将消息lpush到redis,定时去从redis里面rpop拿数据。

优点:各种格式的异常数据,不会阻塞消息的消费,后面push到里面的异常消息。还能消费到。

缺点:引入Redis一定程度上增加了复杂性。如果lpush的过程中异常了,没法处理。需要人力介入了。

另外就是,如果lpush的异常数据很多,会导致队列里很多消息没法消费。

发布于: 2020 年 05 月 07 日阅读数: 48

评论

发布
暂无评论
一种消息消费失败的处理方案