当前位置: 首页 > 网络应用技术

Spring Boot+Redis实现了一个延迟队列,这是写得很好的!

时间:2023-03-08 02:27:48 网络应用技术

  首先,我们分析了这个过程

  我们现在可以理解中间的几个组件

  其中,计时器负责旋转,工作池,延迟存储库和现成的队列都是不同职责的集合。

  现在,我们根据设计内容完成设计。我们分四个步骤进行此设计

  当前需要两个对象,一个是任务对象(作业),一个是负责保存任务参考(延迟作业)的负责。不会引入弹簧启动基础知识。推荐本实际战斗教程:github.com/javastacks/spring-boot-best-prapice

  任务对象

  任务参考对象

  目前,我们需要完成三个容器,工作任务池,延迟任务容器的创建,并完成任务容器

  工作任务池为普通K/V结构提供了基本操作

  延迟任务,使用排序的ZSET保存数据,提供最小值和其他操作

  要完成任务,请使用内部主题进行细分,每个主题对应于列表集合

  设置一个线程池,为每个桶设置旋转查询操作

  通过Postman请求:Local主机:8000/delay/添加

  目前,此延迟任务已添加到线程池中

  设置10秒后,将添加任务

  目前,我们要求Localhost:8000/delay/pop

  目前,任务已响应。在修改状态时设置超时,然后将其放在delaybucket中

  设计30秒后,如果未消费任务,它将重新启动在Readyqueue中

  现在我们要求:localhost:8000/delay/delete

  目前,此任务将在工作库中删除。目前,元数据不再存在,但是任务仍在delaybucket.remove中循环。