有关批处理发送短信问题【重要】

如果分页发送短信:

查询时,根据发送状态选取,发送成功后,修改状态,存在bug:

因为修改了状态,相当于总数减少了,

会导致下次循环时,漏掉数据

建议:每个一段时间发送100条,直到为空结束

 

不再使用分页处理,可以使用while循环,每次取100条发送,直到取不到数据时结束循环;

 

 

 

解释下这个分页的bug:

 对于只读数据,完全可以这样分页批处理,是没问题的;

但是遇到这个场景就不对了,批处理时根据某个字段筛选(如短信发送状态:未发送),处理后又修改了这个字段(如短信发送状态:已经发送),

实际上导致符合条件的总数减少了,那么取第二页数据时,就会漏掉复合条件的数据(可能跑到第一页了);

 

测试环境之所以没有出现这个问题,是因为测试环境每个1分钟执行,漏掉的数据在下个定时任务会处理的;

生产环境只有10,15点执行,所以上午10点漏掉的数据,被下午15点的任务处理了(仍有遗漏数据),才出现这个现象;

这个是我未考虑的的,你也记下,防止以后出现类似的问题,

      

posted @ 2016-07-13 17:25  嗨,你的益达~~~  阅读(341)  评论(0编辑  收藏  举报