实现3天订单自动取消
2015-05-07 18:26
316 查看
采用2种方式混合来处理,保证结果的完全准确性。
1、采用主动触发的方式来取消订单。
订单的表里面,再加入有效时间字段,如果查询的时候,如果订单为已下单未处理状态,查询有效字段,如果该字段的值少于当前时间,说明订单是有效的,可以对订单进行下一步的操作,如果该字段的值大于当前时间,直接更新订单状态为取消。 (不需要清理,在数据新增的时候设置一个过期时间,用户付款的时候检查该订单是否在有效期之内就可以了。)
2、每天凌晨定时处理(一条sql语句搞定),订单有效时间截止昨天晚上23:59:59秒的非已下单未处理订单,批量状态改成无效。
混合处理的好处:
1、节省资源
2、显示结果的准确性。
1.quartz,每几分钟执行一次(根据订单处理速度,和订单生成情况)。
2.没次指定其中的更新条数,例如前1000条。
3.这种方式的确会影响性能,所以要是系统订单比较多,推荐独立的定时服务器。
1、可以创建一个queue(LinkedBlockingQueue),当有新的订单时将该订单放入queue,(这里可以保证该queue是按照过期时间顺序排列的,较后的对象会更晚过期)。
2、另起一个线程A,对该queue读,读到一个尚未过期且未完成的订单则计算离过期的时间xx毫秒,然后将线程A进行sleep(xx),或者wait(xx);随你喜欢了。读到已完成的订单则直接poll(),读到未完成的订单就让它过期掉就好了。
3、可能出现的问题:一些已预订并且已完成的订单可能在3天之内一直存在于该queue中,对内存造成不必要的负担。如果希望能及时清理掉的话,可能需要自己实现该queue,毕竟队列里的内容都是有序的,根据需要移除订单的生成时间,用一个二分法查找是可以很快定位到该对象的。基于链表实现的queue需要移除该链表的一个元素对楼主肯定不会有什么问题吧。
参考自:
http://www.iteye.com/problems/102038
http://bbs.csdn.net/topics/390213669
1、采用主动触发的方式来取消订单。
订单的表里面,再加入有效时间字段,如果查询的时候,如果订单为已下单未处理状态,查询有效字段,如果该字段的值少于当前时间,说明订单是有效的,可以对订单进行下一步的操作,如果该字段的值大于当前时间,直接更新订单状态为取消。 (不需要清理,在数据新增的时候设置一个过期时间,用户付款的时候检查该订单是否在有效期之内就可以了。)
2、每天凌晨定时处理(一条sql语句搞定),订单有效时间截止昨天晚上23:59:59秒的非已下单未处理订单,批量状态改成无效。
混合处理的好处:
1、节省资源
2、显示结果的准确性。
1.quartz,每几分钟执行一次(根据订单处理速度,和订单生成情况)。
2.没次指定其中的更新条数,例如前1000条。
3.这种方式的确会影响性能,所以要是系统订单比较多,推荐独立的定时服务器。
1、可以创建一个queue(LinkedBlockingQueue),当有新的订单时将该订单放入queue,(这里可以保证该queue是按照过期时间顺序排列的,较后的对象会更晚过期)。
2、另起一个线程A,对该queue读,读到一个尚未过期且未完成的订单则计算离过期的时间xx毫秒,然后将线程A进行sleep(xx),或者wait(xx);随你喜欢了。读到已完成的订单则直接poll(),读到未完成的订单就让它过期掉就好了。
3、可能出现的问题:一些已预订并且已完成的订单可能在3天之内一直存在于该queue中,对内存造成不必要的负担。如果希望能及时清理掉的话,可能需要自己实现该queue,毕竟队列里的内容都是有序的,根据需要移除订单的生成时间,用一个二分法查找是可以很快定位到该对象的。基于链表实现的queue需要移除该链表的一个元素对楼主肯定不会有什么问题吧。
参考自:
http://www.iteye.com/problems/102038
http://bbs.csdn.net/topics/390213669
相关文章推荐
- 7天自动收货,30分钟不支付订单自动取消是如何实现的?
- 7天自动收货,30分钟不支付订单自动取消是如何实现的?
- jquery实现前台倒计时。应用下单24小时后自动取消该订单
- jquery实现前台倒计时。应用下单24小时后自动取消该订单
- 如何实现下订单后一个小时后未付款的订单自动取消
- 在Winform中的TreeView控件,实现选中/取消选中父节点则自动选择/取消选中对应子节点
- JavaEE结合quartz实现订单自动失效功能
- 怎么实现每天自动更新订单状态
- 实现用友U890采购订单或委外订单审核后自动发电邮给供应商
- JavaEE之--------利用过滤器实现用户自动登录,安全登录,取消自动登录黑用户禁止登录
- HTTP代理实现请求报文的拦截与篡改8补--自动设置与取消ADSL拔号连接的代理
- Android 取消蓝牙配对框实现自动配对功能
- 电子商务平台自动取消失效订单
- 利用VBA 宏实现vc6.0的自动添加注释和自动取消注释
- PHP实现电商订单自动确认收货redis队列
- android修改系统源码之实现蓝牙自动配对以及取消开机锁屏
- 如何实现软件的自动启动和取消自动启动
- PHP实现电商订单自动确认收货redis队列
- HTTP代理实现请求报文的拦截与篡改8--自动设置及取消代理
- 实现软件的自动启动和取消自动启动