电商系统的订单定时任务如何处理更好?

发布于 2022-09-05 08:25:11 字数 280 浏览 23 评论 0

目前公司的一个电商系统的订单在不同状态下会有不同的定时任务,如:下单后如果商家不审核多少时间后自动审核; 审核后多少时间后不支付自动关闭订单等等还有几种状态,目前这些定时任务的实现是两种方式配合:

  1. quartz定时任务每隔半小时自动扫订单表处理。
  2. 对某个订单进行操作时触发状态判断,进行响应操作。

目前这两种方式结合能满足业务需求,但总觉得不是太好,所以想请教大家一般都是怎么做的,或者有什么好的案例实践?还有有没有能够动态生成定时任务并能准时执行的方案?
谢谢。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(9

属性 2022-09-12 08:25:11

不好意思,木有太好的思路哎,目前采取第一种方法和第二种方法同时用会多一些。

另外两个答主提到的延迟队列,怎么满足楼主的需求呢,我也没看明白

棒棒糖 2022-09-12 08:25:11

参考有赞延迟队列设计实现, https://github.com/ouqiang/de...

陈甜 2022-09-12 08:25:11

延迟队列

rabbitmq-delayed-message-exchange
延迟队列让您可以将队列中新消息的传递操作推迟指定的毫秒数

byte[] messageBodyBytes = "delayed payload".getBytes("UTF-8");
Map<String, Object> headers = new HashMap<String, Object>();
headers.put("x-delay", 5000);
AMQP.BasicProperties.Builder props = new AMQP.BasicProperties.Builder().headers(headers);
channel.basicPublish("my-exchange", "", props.build(), messageBodyBytes);

如上会将消息推迟5000毫秒才会推送给消费者.

优点:

  1. 消息传输可靠
  2. 延迟小
  3. 开源免费
  4. 高可用
蒲公英的约定 2022-09-12 08:25:11

你这两种方案实时性非常的不好,

  1. 消息队列的延迟队列,如楼上有人说的,用这个解决比较好,优点他也说完了..
  2. 有一种算法叫时间轮算法, 可以更加精细的做延迟任务..但是这个比用延迟队列来搞麻烦的多,所以还是推荐延迟队列
自在安然 2022-09-12 08:25:11

定时扫描数据表,再怎么优化也不会好的,还是先把订单信息放入redis等nosql中,然后根据状态的不同剔除或者改变数据的状态,改成定时扫描nosql

丑疤怪 2022-09-12 08:25:11

Beanstalkd

呆头 2022-09-12 08:25:11

延时队列,还有java DelayQueue当然还是延时队列好一点,用queue没有持久化 还得自己做补充逻辑

内心荒芜 2022-09-12 08:25:11

目前我们系统在使用阿里云的消息服务。支持定时发送。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文