jcrontab

【原创】我还是很建议你用DelayQueue搞定超时订单的(1)

北城以北 提交于 2020-11-22 13:22:36
【原创】我还是很建议你用DelayQueue搞定超时订单的(1) 我就是那个人见人爱的 锦成同学,我是java进阶架构师社区的特邀作者, 今天为大家带来新的一篇小知识,祝各位宝宝能学到新知识...更上一层楼..... 一、用三根鸡毛做引言 真的! 不骗你们的喔~ 相信大家都遇到类似于:订单30min后未支付自动取消的开发任务 那么今日份就来了解一下怎么用延时队列 DelayQueue搞定单机版的超时订单 二、延时队列使用场景 那么什么时候需要用延时队列呢?常见的延时任务场景 举栗子: 订单在30分钟之内未支付则自动取消。 重试机制实现,把调用失败的接口放入一个固定延时的队列,到期后再重试。 新创建的店铺,如果在十天内都没有上传过商品,则自动发送消息提醒。 用户发起退款,如果三天内没有得到处理则通知相关运营人员。 预定会议后,需要在预定的时间点前十分钟通知各个与会人员参加会议。 关闭空闲连接,服务器中,有很多客户端的连接,空闲一段时间之后需要关闭之。 清理过期数据业务。比如缓存中的对象,超过了空闲时间,需要从缓存中移出。 多考生考试,到期全部考生必须交卷,要求时间非常准确的场景。 三、解决办法多如鸡毛 定期轮询(数据库等) JDK DelayQueue JDK Timer ScheduledExecutorService 周期性线程池 时间轮(kafka) 时间轮