0 0

Java实现3天订单自动取消30

我目前的业务如下:
有一个订票的业务,当用下了订单后未付款。
那么这个订单在3天后会自动被取消。
用户下单后付了款,我需要在活动提前一天,或者3天进行针对提醒
上面的业务都是需要时时的轮询的,我想过用spring的job来做,但是由于没做过不知道这样是不是太好资源了,万一订单大的话,服务器会不会趴掉,
请问有没有更好的办法,或者能否告知目前大型电商网站,或者12306,小米搞销售时规定少小时必须付款,如果没有付款则自动取消是如何实现的
感激不尽。
说的在简单点,就是类似本站的15天自动结贴
2014年6月20日 00:42

8个答案 按时间排序 按投票排序

0 0

采用2种方式混合来处理,保证结果的完全准确性。

1、采用主动触发的方式来取消订单。
订单的表里面,再加入有效时间字段,如果查询的时候,如果订单为已下单未处理状态,查询有效字段,如果该字段的值少于当前时间,说明订单是有效的,可以对订单进行下一步的操作,如果该字段的值大于当前时间,直接更新订单状态为取消。

2、每天凌晨定时处理(一条sql语句搞定),订单有效时间截止昨天晚上23:59:59秒的非已下单未处理订单,批量状态改成无效。


混合处理的好处:
1、节省资源
2、显示结果的准确性。

2014年6月24日 17:28
0 0

这个功能我实际经验,民航某大航空公司的机票订单管理系统,订座45分钟付款,否者取消。
1.quartz,每几分钟执行一次(根据订单处理速度,和订单生成情况)。
2.没次指定其中的更新条数,例如前1000条。
3.这种方式的确会影响性能,所以要是系统订单比较多,推荐独立的定时服务器。

2014年6月23日 13:59
0 0

1.定时任务
2.业务过期数据轮询 指定条数
3.条数进行多线程分发执行过期订单的取消

2014年6月20日 20:06
0 0

crontab每分钟执行一次程序,从db中查找已过期的订单,发一个http请求到你的服务器进行处理

2014年6月20日 16:29
0 0

quartz,每天定时执行一下,可以满足要求!

2014年6月20日 13:26
0 0

1、可以创建一个queue(LinkedBlockingQueue),当有新的订单时将该订单放入queue,(这里可以保证该queue是按照过期时间顺序排列的,较后的对象会更晚过期)。

2、另起一个线程A,对该queue读,读到一个尚未过期且未完成的订单则计算离过期的时间xx毫秒,然后将线程A进行sleep(xx),或者wait(xx);随你喜欢了。读到已完成的订单则直接poll(),读到未完成的订单就让它过期掉就好了。

3、可能出现的问题:一些已预订并且已完成的订单可能在3天之内一直存在于该queue中,对内存造成不必要的负担。如果希望能及时清理掉的话,可能需要自己实现该queue,毕竟队列里的内容都是有序的,根据需要移除订单的生成时间,用一个二分法查找是可以很快定位到该对象的。基于链表实现的queue需要移除该链表的一个元素对楼主肯定不会有什么问题吧。

2014年6月20日 11:33
0 0

定时调度可以用,但只要每天执行一次就行了,如果订单量非常大,轮一次都要好久。所以每天半夜轮一次就行了,然后统一执行,过期的update掉,快过期的提醒用户。

至于用户那边的订单状态显示,用户查询后你可以做个处理嘛,大于3天的就给他显示订单失效,(但其实数据库里面订单状态还是正常的,需要等到晚上才会统一update掉)

http://blog.csdn.net/oracle_microsoft/article/details/4412502
这是定时调度的例子,说的挺细挺傻瓜的。

2014年6月20日 09:27
0 0

应该可以用quartz做吧,设置定时任务,每天或者每小时或者每分钟去检测是不是有超过3天未付款的账单,如果有,就取消(也就是删除),如果他的订单时间大于服务器时间2天,然后就给他发提醒

2014年6月20日 08:28

相关推荐

    基于Java的酒店预订管理系统的设计与实现【附源码】

    根据用户输入预订信息生成订单,订单自动维护信息有订单编号,订单状态。用户输入信息保存到订单中,订单价格根据房间类型,数量,时间计算好保存到订单中。初始订单状态为预订。 注意酒店客房数量不足情况,如果客...

    Java实现Web应用中的定时任务(实例讲解)

    Java实现Web应用中的定时任务 Java实现Web应用中的定时任务是一个非常重要的功能,在当前...Java实现Web应用中的定时任务是一个非常重要的功能,可以指定一个未来的时间范围执行一定任务,提高系统的自动化和智能化。

    java延迟队列.docx

    例如,用户下单后超过2天未支付的订单应当自动取消。 ##### 3.2 实现方式:Spring Task - **Spring Task简介**: Spring Boot提供了一个简单易用的定时任务框架,即Spring Task,用于实现轮询扫描等功能。 - **配置...

    java范例开发大全

    1.2 搭建Java所需环境 3 1.2.1 下载JDK 3 1.2.2 安装JDK 4 1.2.3 配置环境 5 1.2.4 测试JDK配置是否成功 7 实例1 开发第一个Java程序 7 第2章 Java基础类型与运算符(教学视频:39分钟) 9 2.1 基础类型 9 实例2 ...

    java范例开发大全源代码

     1.2 搭建Java所需环境 3  1.2.1 下载JDK 3  1.2.2 安装JDK 4  1.2.3 配置环境 5  1.2.4 测试JDK配置是否成功 7  实例1 开发第一个Java程序 7  第2章 Java基础类型与运算符(教学视频:39分钟) ...

    Java范例开发大全 (源程序)

     1.2 搭建Java所需环境 3  1.2.1 下载JDK 3  1.2.2 安装JDK 4  1.2.3 配置环境 5  1.2.4 测试JDK配置是否成功 7  实例1 开发第一个Java程序 7  第2章 Java基础类型与运算符(教学视频:39分钟) 9  ...

    Java范例开发大全(全书源程序)

    1.2 搭建Java所需环境 3 1.2.1 下载JDK 3 1.2.2 安装JDK 4 1.2.3 配置环境 5 1.2.4 测试JDK配置是否成功 7 实例1 开发第一个Java程序 7 第2章 Java基础类型与运算符 实例2 自动提升 9 实例3 自动转换 10 ...

    java范例开发大全(pdf&源码)

    1.2 搭建Java所需环境 3 1.2.1 下载JDK 3 1.2.2 安装JDK 4 1.2.3 配置环境 5 1.2.4 测试JDK配置是否成功 7 实例1 开发第一个Java程序 7 第2章 Java基础类型与运算符(教学视频:39分钟) 9 2.1 基础类型 9 实例2 ...

    毕业设计javajsp羽毛球馆管理系统ssh-qlkrp源码含文档工具包

    毕业设计javajsp羽毛球馆管理系统ssh-qlkrp源码含文档工具包 后台是ssh框架,页面是jsp,数据库mysql,jdk1.8,开发工具用ecplise、myecplise、sts、idea都可以 会员 1. 会员信息查看; 2. 会员信息修改; 3. ...

    jspgou网店系统 v4.0.rar

    JSPGOU一直以来都和jeecms、jeebbs一样,是收费软件,但是从...2.新增24小时未支付订单,自动取消 2.修复会员中心积分 3.修复购物车 4.修复货到付款 4.修复分类查询分页问题 5.修复商品上下架问题 4.修复在线客服

    RabbitMQ 3.9( 续 ).doc

    1. **支付订单超时**:创建订单后,如果30分钟内未完成支付,系统自动取消订单。 2. **退款处理**:用户申请退款后,如果商家在3天内未响应,系统自动介入处理。 **实现延迟队列的逻辑:** 1. 生产者(P)发布消息...

    realplayer

    如果您希望在执行自动更新时收到通知,请按以下步骤操作:在“工具”菜单中选择“首选项”、“自动更新”,然后取消选择“自动下载和安装软件更新”。 d) 消息中心:使用消息中心,RealPlayer 软件可以自动与 RN ...

Global site tag (gtag.js) - Google Analytics