【不靠谱程序员】不靠谱程序员这样做幂等控制,你接受吗?
批处理定时任务的实现方式,不外乎下面这样。当然,在数据记录较多时,也会采用分页获取数据分批处理。
批处理程序顾名思义涉及到批量数据的处理,程序执行时间一般也比较长。anyway,对于这样的程序,技术上做好防重复请求是一项基本要求。
下面REST接口用来暴露给一个定时调度服务来调用。这个接口的业务逻辑是将系统里待付款的交易发往银行。做过支付的同学应该明白,这种程序是必须要做好防重控制的。
当然,你也看到了,这个REST接口并未做幂等控制。当追问编写这段代码的小伙时,他表示,在for循环里,已经用redis对单条做了防重复执行付款的控制,外面接口就无所谓了吧。
这种无所谓的态度,各位看官,你接受吗?
接口幂等性和业务防重复处理是两个事情,是程序防重复执行必须要考虑的两个因素。很多时候,我们要同时结合两者来使用,这就是所谓的双重检查。
附:插图素材来自processOn
当看到一些不好的代码时,会发现我还算优秀;当看到优秀的代码时,也才意识到持续学习的重要!--buguge
本文来自博客园,转载请注明原文链接:https://www.cnblogs.com/buguge/p/17806368.html