让任务在特定的时间点执行某一动作

程序员在旅途 2019-02-28 11:02:27
项目采用 Java开发语言, spring框架。

比如,我现在有一个订单,订单上面有时间标识,我现在需要在订单时间20分钟前,来处理这个订单,处理动作可能是销毁,可能是取消(未支付,到时间点自动取消)等。
12306上面也有类似的场景,选择一张车票,如果30分钟内未支付,自动取消订单。这个到点取消,是如何触发的呢?有啥解决方式吗?

我的应用场景是: 目前在做一个咨询类的小程序,用户在小程序下单后,会生成一个订单。订单上面有咨询时间,我需要在咨询时间前20分钟提醒用户咨询时间到了,进入小程序来进行咨询。
比如订单咨询时间是8:00,我需要在7:40来发送短信通知给用户,这个到7:40这个点,就该触发发送短信的操作,怎么进行触发呢?
之前考虑过用定时器,轮询操作,但是这个效率太低了,有没有成熟的解决方案提供呢?不胜感激,谢谢指点
...全文
933 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
stacksoverflow 2019-02-28
  • 打赏
  • 举报
回复
引用 1 楼 stacksoverflow 的回复:
延迟队列了解一下。
启动多个消费者同时消费延迟队列。 订单生成后,按你的触发事件时间放到延迟队列里。 时间到了就会被消费者所消费。
stacksoverflow 2019-02-28
  • 打赏
  • 举报
回复
延迟队列了解一下。
哈希塞特 2019-02-28
  • 打赏
  • 举报
回复
1. 延时队列 需要持久化就用一些中间件,本地再维护几张消息表。 不需要持久化就直接用jdk中的ScheduledThreadPoolExecutor 2. 时间轮,netty有个HashedWheelTimer,持久化要自己实现,这个能处理海量定时任务

51,412

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧