Redisson延迟任务

Redisson是一个在Redis的基础上实现的工具集,提供了Redis最简单最快捷的方法常用于延迟任务分布式锁

延迟任务的实现

延迟任务的实现方案有很多,常见的有4类:DelayQueue、Redisson、MQ、时间轮。DelayQueue与时间轮不依赖第三方服务,但只能用于单机使用。Redisson和MQ支持分布式锁,但缺点是依赖于第三方软件。

Redisson延迟任务的实现步骤

1.添加依赖redisson-spring-boot-starter.

2.添加配置:所需微服务中的application.yml添加redis的配置,指名暗转redisson的服务器地址.

3.@Autowired注入RedissonClient对象

4.由于Redisson实现延迟队列主要是依靠Redis的Zset和List实现的,先进入到ZSet按照延迟时间顺序排序。在进入到List阻塞队列等待被消费。所以代码中要先使用redisssonClient.getBlockingDueue("队列名称"),Dueue为双开口队列,获取到List阻塞队列,

再根据List生成ZSet即redissonClient.getDelayQueue(放阻塞队列变量名)生成Zset  delayedQueue

然后将消息放入到延迟队列中,指定延迟时间即可。delayedQueue.offer(方法参数传入的消息ID,方法参数传入的延迟时间,延迟时间单位).

上述步骤已创建好延迟队列,下面等时间到了按步骤执行即可完成

5.在需要延迟队列中的消息处,从延迟队列中获取到消息即可,redisssonClient.getBlockingDueue("队列名称")获取与上述同一个blockingQueue,然后调用poll方法获取。后续跟延迟任务的业务逻辑代码。

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值