事情是这样的:我的业务要求传入一个json去解析然后插入几张表中,并且需要生成pdf文件;
由于生成pdf时间较长我决定采用线程的形式进行单独生成不会影响主业务的返回,并且也在业务允许。
进入方法解析完json组装车辆信息然后进行了车辆信息保存的操作
接下来是一些其他表的插入,在方法最后把生成pdf需要的信息放入到队列中
我们在走到线程里面查看具体实现方法
在没修改之前传入的是车辆id然后根据车辆id去获取车辆信息
修改前通过传入的车辆id去数据库获取车辆信息,但就是这一步容易出现问题,输入已经调用的车辆的插入方法但事物有可能并没有完全完成线程这时就开始了调用查询方法所以这个时候有几率返回空的情况;
解决方法
方法一:不通过数据库查询,通过方法传值的方式获取车辆信息;
方法二:在调用失败后延迟一段时间再重新调用,具体延迟和重试看自己业务要求;
总结
做技术任重而道远,工作中总会遇到各种挑战你知识面的问题,挑战的同时也是对自身的一种提升