有关批处理发送短信问题【重要】
如果分页发送短信:
查询时,根据发送状态选取,发送成功后,修改状态,存在bug:
因为修改了状态,相当于总数减少了,
会导致下次循环时,漏掉数据
建议:每个一段时间发送100条,直到为空结束
不再使用分页处理,可以使用while循环,每次取100条发送,直到取不到数据时结束循环;
解释下这个分页的bug:
对于只读数据,完全可以这样分页批处理,是没问题的;
但是遇到这个场景就不对了,批处理时根据某个字段筛选(如短信发送状态:未发送),处理后又修改了这个字段(如短信发送状态:已经发送),
实际上导致符合条件的总数减少了,那么取第二页数据时,就会漏掉复合条件的数据(可能跑到第一页了);
测试环境之所以没有出现这个问题,是因为测试环境每个1分钟执行,漏掉的数据在下个定时任务会处理的;
生产环境只有10,15点执行,所以上午10点漏掉的数据,被下午15点的任务处理了(仍有遗漏数据),才出现这个现象;
这个是我未考虑的的,你也记下,防止以后出现类似的问题,