java实现消息队列以及延迟消息(队列DelayQueue)

createh54周前 (02-01)技术教程14

1.java实现延迟消息(队列DelayQueue)

DelayQueue是一个支持延时获取元素的无界阻塞队列。队列使用PriorityQueue来实现。队列中的元素必须实现Delayed接口,在创建元素时可以指定多久才能从队列中获取当前元素。只有在延迟期满时才能从队列中提取元素。

缓存系统的设计:这里使用DelayQueue保存缓存元素的有效期,一个线程(生产者)设置失效实现循环添加消息,使用一个线程(消费者)循环查询

DelayQueue,一旦能从DelayQueue中获取元素时,表示缓存有效期到了

应用场景:

消息生产和消费有时间窗口要求,例如在电商交易中超时未支付关闭订单的场景,在订单创建时会发送一条延时消息。这条消息将会在 30 分钟以后投递给消费者,消费者收到此消息后需要判断对应的订单是否已完成支付。如支付未完成,则关闭订单。如已完成支付则忽略。

通过消息触发一些定时任务,例如在某一固定时间点向用户发送提醒消息。

前提条件:放置在DelayQueue的元素需要实现Delayed接口,Delayed接口使对象成为延迟对象,它使存放在DelayQueue类中的对象具有了激活日期

2.实现Delayed接口

3.生产者

4.消费者

5.main方法

6.效果

原文链接:https://blog.csdn.net/Violet_201903027/article/details/114116206

相关文章

JavaWeb开发框架,你又真正了解多少?

很久以前就想写这样的文章了,现在传统软件和互联网软件行业的兴起,让很多人都成为了程序猿,以至于现在程序猿的泛滥,水平参差不齐,很多都是懂得皮毛不懂的原理,偏离了软件开发的思想!重点摘要: 现在我们we...

JavaWeb项目实战:Tomcat服务器配置及业务功能开发全攻略

大家好,我是袁庭新。在 JavaWeb 开发的世界里,高效搭建与部署项目是每个开发者的必备技能。今天,我们将聚焦于如何运用 IDEA 完成一个基于 Maven 的 JavaWeb 项目实践。从业务功能...

Java高级工程师学习线路总结:Java Web开发

  目前,国内外信息化建设已经进入基于Web应用为核心的阶段,Java作为应用于网络的最好语言,前景无限看好。然而,就算用Java建造一个不是很烦琐的web应用,也不是件轻松的事情。那么,具备Java...

Java Web开发的学习路径与实践策略

在信息技术的海洋里,Java Web开发犹如一座富饶的岛屿,吸引着无数求知者前来探索。对于那些渴望踏入这片领域的人来说,如何构建一个合理的学习规划是首要考虑的问题。学习Java Web不仅仅是掌握一系...

如果通过Java来完成大数据开发,需要学习哪些内容

首先,当前大数据领域的开发岗位确实比较多,近两年有不少大数据方向的研究生也会从事大数据开发岗位,而Java语言则是大数据开发人员的常用工具,所以如果要从事大数据开发岗位,可以重点学习一下Java语言。...