hello,各位小伙伴们,上午好~ 昨晚生产系统机房切换,又度过了一个不眠之夜。趁着这段无聊时间,分享一下前一段时间 RocketMQ 踩坑经历
前言
事情是这样的,前端时间我们有个新业务上线,这个业务需要监听支付成功的 mq 消息,然后向绑定的音箱推送消息。这样用户在支付完成之后,商家端就就可以收到收款播报。
起初我们在测试环境的测试的时候,一切流程非常顺利,没有任何问题。但是等到我们发布上线之后,却出现了问题。
一笔支付成功之后,音箱没有发出收款成功的播报。一切流程排查下来之后,这才发现原来 MQ 消费端没有正常在消费消息。
开始排查问题,第一想到的是消费端是不是发布失败了,但是查看相关日志,并没有任何异常。
登录 MQ 控制台,尝试手动重新发布消息,神奇的事来了,「消费端成功收到消息」。
总结现在的问题,下文开始排查。
- MQ 消费端应用没有异常,但是无法正常消费
- MQ 控制台发送消息,消费端可以成功消费消息
排查问题
刚开始排查的时候,由于没有任何异常业务日志可以定位问题,所以问题排查起来十分困难。
排查了两天了,想过各种问题。比如当前消费端使用 RocketMQ 客户端版本比较高,是不是版本兼容性导致的问题呢?
于是降低消费端的版本,重新发布之后,问题依然存在。
没办法,只好使用 Google 大法了。
通过搜索发现,原来默认情况下 rockmq 客户端的日志将会单独打印输出,日志文件位置如下: