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方法获取。后续跟延迟任务的业务逻辑代码。

你可能感兴趣的:(微服务项目复习总结,java)