问题描述
数据分析师反馈,部分用户会员到期了,没有自动扣费,签约记录也是正常的。取其中某个用户id排查,383005731,此用户在3月22日开通了连续包月,会员到期时间为4月22日,按照规则,4月21日应该发起自动扣费续期会员,但是查询订单表,并没有自动扣费的订单记录
分析问题
查询自动续费接口请求日志,没有找到相关日志,确定是没有发起自动扣费
发起自动扣费是在xxl-job的定时任务中,每天定时发起,其中关键代码如下
查询xxl-job日志,发现有如下报错
报错显示,调用自动续费接口出现超时报错,由于循环中没有catch这个异常,某个用户自动续费出问题,会导致跟他属于同一个表的用户都不会发起扣费,抛出异常后,任务就退出了
解决问题
扣费接口依赖三方外部业务,时间不可控,可能会发送超时的情况,但是一个用户有问题不应该影响别的用户,此次对调用自动续费的流程应该try-catch,修改如下:
总结
1、线上监控要补全,有问题才能及时发现。
2、需求开发中要考虑各种异常情况的处理,不能因为一个错误影响全局。
3、线上问题优先处理。
4、cr要重视起来。