当前位置:   article > 正文

SpringBoot系列之使用Redis实现延时队列_spring boot redis实现延迟任务

spring boot redis实现延迟任务

需求背景

在项目中可能会遇到这样的业务场景,下单后,并没有支付,隔多久后,如果用户还没支付,就自动取消订单,针对这种延时支付的场景,有很多实现方法,可以用MQ来实现,但是如果针对一个小项目,要引入MQ,有时候会觉得成本有点大,那可以用redis来实现,redis实现延时队列也有多种方案,比如可以使用发布订阅模式来实现,也可以直接用zSet集合来实现,本博客通过zSet集合来实现延时队列,仅供参考

实现思路

要实现延时队列,可以使用redis zSet的一些命令,比如生产者生成消息,就加入队列里,先简单用定时任务,通过当前的时间戳获取所有的消息,到期的消息自动消费

  • 发送消息,添加到队列里
# key为队列的名称,score为当前的时间戳加上延迟时间,value为消息体
zadd key score value
  • 1
  • 2
  • 根据当前时间戳获取所有的消息数据
# key为队列的名称,min为0,max为当前的时间戳
zrangebyscore key min max
  • 1
  • 2
  • 消费了,就移出队列
    声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/491591
    推荐阅读
    相关标签
      

    闽ICP备14008679号