订单超时自动取消方案

Java源码网 1月前 ⋅ 176 阅读

摘要

订单超时自动取消方案

1、数据库轮询

小型项目常用方式,通过一个线程去扫描数据库或者数据库定时任务,通过订单时间,判断超时的订单,进行更新状态或者其他操作。

2、JDK延迟队列

DelayQueue 是一个无界阻塞队列,只有在延迟期满时才从中获取元素,放入DelayQueue中的对象需要实现Delayed接口。 ProducerDelay生产者生成一个任务 DelayQueue通过poll()或者take()方法获取超时时间任务。然后到达消费者consumerDelay

3、Redis

redis是一个开源的、高性能、基于键值对的缓存与存储系统,通过提供多种键值数据类型来适应不同的场景,通过提供多种键值数据适应不同场景来适应缓存与存储的需求,value的类型可以提供String Map List Sets sortedSets类型。 redis有序集合 将订单超时的时间戳与订单号分别设置为score与member 系统扫描第一个元素是否超时。

4、MQ

用RabbitMQ ActiveMQ JMS进行判断订单是否超时,队列中可以设置判断类型 从进入队列开始 如果条件符合,直接持久化,如果超过时间将消息删除。


全部评论: 0

    我有话说: