记一次RocketMQ的重复消费问题

问题现场

博主正在负责一个数据服务平台,某一天,下游客户突然找上门来,说平台消费后保存的数据存在大量重复现象,于是迅速展开了排查。

排查解决
part1

博主排查了上游数据,排查了rocketmq server端,但是却忽视掉了消费client端。其原因是由于数据量过大,日志无法观察到进行了重复消费。
最后实在排查无果,本着快速解决的原则,于是博主开发了一套数据去重机制,就这样问题暂时解决了。

part2

直到今天,博主看到了这位老哥的博客
终于意识到了问题所在,博主与老哥博主犯了同样的错误,消费主体代码的异常捕获级别只采用了Exception,却遗漏了Error。
于是有了如下的解决方案:
为避免有异常被漏掉,将捕获级别设置为Throwable。(Exception与Error均继承于Throwable)
进而保证listener成功返回CONSUME_SUCCESS状态,避免重复消费。

(捕获到异常后记得及时解决问题哦)

你可能感兴趣的:(bug记录)