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

createh54个月前 (02-01)技术教程43

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

相关文章

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

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

SpringBoot之旅第四篇-web开发(springboot webjars)

一、引言有了自动配置,springboot使web开发变得简单,这个在springboot之旅中的第一篇中就有体现,实际的开发中当然不会这么简单,很多时候我们都需要自己去定制一些东西。web开发的东西...

2024,java开发还有未来么?(java开发工程师未来三年的发展)

Java自诞生以来,凭借其跨平台性、面向对象和强大的生态系统,迅速成为了全球最受欢迎的编程语言之一,不仅在企业级应用中占据主导地位,还在Web开发、移动开发、大数据处理等领域拥有广泛的应用。而它广泛的...

Java:Java和C++哪个更好(java 和c++哪个好)

  Java 和C++哪个更好是一个非常热门的话题。Java 和C++都是面向对象的编程语言。C++ 是 C 的高级版本,而Java是在可移植的虚拟机上开发的。Java 有自己的库来为多种用途提供支持...

2023年Web开发的5个最佳Java框架(java web应用开发的流行框架主要有哪些?)

Java 语言是世界上最流行、使用最广泛的编程语言之一。它以其可靠性、性能以及跨不同平台和设备的兼容性而闻名。然而,如果没有框架的帮助,用Java开发web应用程序可能会很有挑战性并且很耗时。框架是软...

HTML5 崛起之时,Java 桌面时代就已经终结了

2004 年 Google Maps 的面世标志着 Java 桌面时代的终结,也改变了桌面环境下“跨平台”的基本定义。本文作者以个人视角对 Java 桌面发展历程做了回顾,内容来自他在上世纪九十年代后...