当前位置: 首页 > news >正文

Redisson使用延时队列

延时队列

在开发中,有时需要使用延时队列。

比如,订单15分钟内未支付自动取消。

jdk延时队列

如果使用 jdk自带的延时队列,那么服务器挂了或者重启时,延时队列里的数据就会失效,可用性比较差。

Redisson延时队列

可以使用Redisson的延时队列。

Redisson的配置,详情见:https://blog.csdn.net/sinat_32502451/article/details/133799192

在延时队列中添加任务

    public void addDelayQueue(String orderId) {RBlockingDeque<String> blockingDeque = redissonClient.getBlockingDeque("orderQueue");RDelayedQueue<String> delayedQueue = redissonClient.getDelayedQueue(blockingDeque);//在延时队列中添加任务,5秒后生效delayedQueue.offer(orderId, 5, TimeUnit.SECONDS);log.info("addDelayQueue orderId:" + orderId);}

取出延时队列中的任务

取出延时队列中的任务,如果延时队列中没有任务,会阻塞,直到队列中添加了任务。

public void takeDelayQueue() {log.info("DelayQueue take start.");RBlockingDeque<String> blockingDeque = redissonClient.getBlockingDeque("orderQueue");RDelayedQueue<String> delayedQueue = redissonClient.getDelayedQueue(blockingDeque);while (true) {String orderId = null;try {//取出延时队列中的任务,如果延时队列中没有任务,会阻塞,直到队列中添加了任务。orderId = blockingDeque.take();} catch (Exception e) {log.error("blockingDeque.take error.", e);}if (orderId != null) {log.info("DelayQueue get orderId:" + orderId);//实际情况不需要break,此处为了方便调试break;}}}

日志:

异步调用 takeDelayQueue()方法,不断在延时队列中拉取数据,由于队列中没有数据,所以该方法会先阻塞。

接着调用 addDelayQueue()方法,往队列中添加数据,观察日志,可以发现 5秒后,取到队列中的数据。

[2023-10-12 21:30:49.536]  INFO  c.c.m.c.controller.DelayQueueController  [line: 63] DelayQueue take start.
[2023-10-12 21:30:54.725]  INFO  c.c.m.c.controller.DelayQueueController  [line: 54] addDelayQueue orderId:12345
[2023-10-12 21:30:59.821]  INFO  c.c.m.c.controller.DelayQueueController  [line: 72] DelayQueue get orderId:12345

参考资料:

https://blog.csdn.net/sinat_32502451/article/details/133799192
https://blog.csdn.net/qq_27818157/article/details/107514319

相关文章:

Redisson使用延时队列

延时队列 在开发中&#xff0c;有时需要使用延时队列。 比如&#xff0c;订单15分钟内未支付自动取消。 jdk延时队列 如果使用 jdk自带的延时队列&#xff0c;那么服务器挂了或者重启时&#xff0c;延时队列里的数据就会失效&#xff0c;可用性比较差。 Redisson延时队列 …...

基于php 进行每半小时钉钉预警

前言 业务场景&#xff1a;监控当前业务当出现并发情况时技术人员可以可以及时处理 使用技术栈&#xff1a; laravelredis 半小时触发一次报警信息实现思路 1、xshell脚本 具体参数就不详细解释了&#xff0c;想要详细了解可以自行百度 curl -H "Content-Type:appl…...

5.Python-使用XMLHttpRequest对象来发送Ajax请求

题记 使用XMLHttpRequest对象来发送Ajax请求&#xff0c;以下是一个简单的实例和操作过程。 安装flask模块 pip install flask 安装mysql.connector模块 pip install mysql-connector-python 编写app.py文件 app.py文件如下&#xff1a; from flask import Flask, reque…...

八皇后问题的解析与实现

问题描述 八皇后问题是一个古老而又著名的问题。 时间退回到1848年,国际西洋棋棋手马克斯贝瑟尔提出了这样的一个问题: 在88格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问一共有多少种摆法。 如何找到这所有的…...

论文浅尝 | 深度神经网络的模型压缩

笔记整理&#xff1a;闵德海&#xff0c;东南大学硕士&#xff0c;研究方向为知识图谱 链接&#xff1a;https://arxiv.org/abs/1412.6550 动机 提高神经网络的深度通常可以提高网络性能&#xff0c;但它也使基于梯度的训练更加困难&#xff0c;因为更深的网络往往更加强的非线…...

进阶JAVA篇- DateTimeFormatter 类与 Period 类、Duration类的常用API(八)

目录 1.0 DateTimeFormatter 类的说明 1.1 如何创建格式化器的对象呢&#xff1f; 1.2 DateTimeFormatter 类中的 format&#xff08;LocalDateTime ldt&#xff09; 实例方法 2.0 Period 类的说明 2.1 Period 类中的 between(localDate1,localDate2) 静态方法来创建对象。 3.…...

1.1 Windows驱动开发:配置驱动开发环境

在进行驱动开发之前&#xff0c;您需要先安装适当的开发环境和工具。首先&#xff0c;您需要安装Windows驱动开发工具包&#xff08;WDK&#xff09;&#xff0c;这是一组驱动开发所需的工具、库、示例和文档。然后&#xff0c;您需要安装Visual Studio开发环境&#xff0c;以便…...

Jetpack:009-kotlin中的lambda、匿名函数和闭包

文章目录 1. 概念介绍2. 使用方法2.1 函数类型的变量2.2 高阶函数 3. 内容总结4.经验分享 我们在上一章回中介绍了Jetpack中Icon和Imamg相关的内容&#xff0c;本章回中主要介绍Kotlin中的 lambda、匿名函数和闭包。闲话休提&#xff0c;让我们一起Talk Android Jetpack吧&…...

openGauss指定schema下全部表结构备份与恢复

本次测试针对openGauss版本为2.0.5 gs_dump指定schema下全部表结构信息备份 gs_dump database_name -U username -p port -F c -s -n schema_name -f schema.sqldatabase_name&#xff1a;数据库名&#xff0c;要备份的数据库名称 username&#xff1a;用户名&#xff0c;数据…...

干货:如何在前端统计用户访问来源?

在前端统计用户访问来源是一个常见的需求&#xff0c;通过获取访问来源信息&#xff0c;我们可以了解用户是通过直接访问、搜索引擎、外部链接等途径进入我们的网站或应用。下面是一个详细的介绍&#xff0c;包括方法和实现步骤。 一、获取HTTP Referer HTTP Referer是HTTP请…...

李宏毅生成式AI课程笔记(持续更新

01 ChatGPT在做的事情 02 预训练&#xff08;Pre-train&#xff09; ChatGPT G-Generative P-Pre-trained T-Transformer GPT3 ----> InstructGPT&#xff08;经过预训练的GPT3&#xff09; 生成式学习的两种策略 我们在使用ChatGPT的时候会注意到&#xff0c;网站上…...

nodejs+vue+elementui酒店客房服务系统mysql带商家

视图层其实质就是vue页面&#xff0c;通过编写vue页面从而展示在浏览器中&#xff0c;编写完成的vue页面要能够和控制器类进行交互&#xff0c;从而使得用户在点击网页进行操作时能够正常。 简单的说 Node.js 就是运行在服务端的 JavaScript。 前端技术&#xff1a;nodejsvueel…...

【网络协议】聊聊网络分层

常用的网络协议 首先我们输入www.taobao.com&#xff0c;会先经过DNS进行域名解析&#xff0c;转换为59.82.122.115的公网IP地址。然后就会发起请求&#xff0c;一般来说非加密的使用http&#xff0c;加密的使用https。上面是在应用层做的处理&#xff0c;那么接下来就是到传输…...

[开源]基于Vue+ElementUI+G2Plot+Echarts的仪表盘设计器

一、开源项目简介 基于SpringBoot、MyBatisPlus、ElementUI、G2Plot、Echarts等技术栈的仪表盘设计器&#xff0c;具备仪表盘目录管理、仪表盘设计、仪表盘预览能力&#xff0c;支持MySQL、Oracle、PostgreSQL、MSSQL、JSON等数据集接入&#xff0c;对于复杂数据处理还可以使用…...

html设置前端加载动画

主体思路参考&#xff1a; 前端实现页面加载动画_边城仔的博客-CSDN博客 JS图片显示与隐藏案例_js控制图片显示隐藏-CSDN博客 1、编写load.css /* 显示加载场景 */ .loadBackGround{position: absolute;top: 0px;text-align: center;width: 100%;height: 100vh;background-c…...

【git的使用方法】——上传文件到gitlab仓库

先进入到你克隆下来的仓库的目录里面 比如&#xff1a;我的仓库名字为zhuox 然后将需要上传推送的文件拷贝到你的克隆仓库下 这里的话我需要拷贝的项目是t3 输入命令ls&#xff0c;就可以查看该文件目录下的所有文件信息 然后输入git add 文件名 我这边输入的是 &#x…...

Kafka 开启SASL/SCRAM认证 及 ACL授权(二)ACL

Kafka 开启SASL/SCRAM认证 及 ACL授权(二)ACL。 官网地址:https://kafka.apache.org/ kafka authentorization:https://docs.confluent.io/platform/current/kafka/authorization.html 一、开启ZK ACL(可选,内网环境,用户无机器访问权限时) 给kafka meta都加上zk的ac…...

Java8 新特性之Stream(三)-- Stream的终结操作

目录 1.forEach(Consumer) 2.reduce(BinaryOperator) 3.max([Comparator]) 4.min([Comparator]) 5.count() 6.findFirst() 7.findAny() 拓展:...

【Vue面试题二十八】、vue要做权限管理该怎么做?如果控制到按钮级别的权限怎么做?

文章底部有个人公众号&#xff1a;热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享&#xff1f; 踩过的坑没必要让别人在再踩&#xff0c;自己复盘也能加深记忆。利己利人、所谓双赢。 面试官&#xff1a;vue要做权限管理该怎么做…...

1、验证1101序列(Moore)

题目要求&#xff1a; 用Moore型状态机验证1101序列。 题目描述&#xff1a; 用使用状态机验证1101序列&#xff0c;注意&#xff1a;允许重复子序列。如图 端口描述&#xff1a; module moore_1101(input clk,//时钟信号input clr,//reset复位信号&#xff0c;高电平有效in…...

工程师创业17年:自举、模拟IP与卖身抉择

1. 创业的十字路口&#xff1a;工程师的“卖身”抉择在硅谷&#xff0c;或者说在全球任何一个技术创业的聚集地&#xff0c;有一个问题像幽灵一样&#xff0c;在每个创始人脑中盘旋&#xff0c;尤其是当公司步入稳定盈利的第十个、第十七个年头时&#xff1a;是时候卖掉公司&am…...

开源 Qwen3.6 27B 的真实生产力:当本地模型开始替代 SaaS 工具

开源 Qwen3.6 27B 的真实生产力&#xff1a;当本地模型开始替代 SaaS 工具有一个问题在 AI 社区里反复出现&#xff1a;本地 LLM 除了聊天&#xff0c;还能干什么真正有用的事&#xff1f;r/LocalLLaMA 上最近一个帖子给出了答案——不是玩具级别的演示&#xff0c;而是把 SaaS…...

书匠策AI:2026年写毕业论文的“开挂说明书“——一个教育博主的硬核拆解

你离毕业&#xff0c;可能只差一个书匠策AI的距离 各位还在和毕业论文"互相折磨"的同学们&#xff0c;我是一个专门教人写论文的教育博主。今天不聊理论&#xff0c;不灌鸡汤&#xff0c;直接给你们安利一个我最近扒了很久的工具——书匠策AI&#xff08;官网 官网直…...

从STM32空闲中断迁移到HC32F460超时中断:串口不定长数据接收的两种思路对比

STM32空闲中断与HC32F460超时中断的深度对比&#xff1a;串口不定长数据接收实战指南 在嵌入式系统开发中&#xff0c;串口通信作为最基础的外设接口之一&#xff0c;其数据接收的稳定性和效率直接影响系统性能。对于无固定协议帧的串口数据流&#xff08;如编码器输出&#xf…...

DeepChat:开源AI智能体平台,统一管理多模型与工具的工作台

1. 项目概述与核心价值如果你和我一样&#xff0c;每天需要在多个AI模型之间来回切换——写代码时用Claude&#xff0c;查资料时用GPT&#xff0c;跑本地模型时又得打开Ollama的命令行——那么你肯定也受够了这种碎片化的体验。更别提那些复杂的工具调用、技能配置&#xff0c;…...

自主AI助手Angel:基于大语言模型的多通道智能体部署与实战

1. 项目概述&#xff1a;一个能帮你“跑腿”的自主AI助手如果你和我一样&#xff0c;经常在Discord、Slack、iMessage和Signal这几个聊天软件之间来回切换&#xff0c;同时电脑上还开着十几个终端窗口处理各种杂事&#xff0c;那你肯定幻想过能有一个“数字管家”。它最好能看懂…...

Elsevier Tracker:科研工作者必备的智能投稿状态追踪工具

Elsevier Tracker&#xff1a;科研工作者必备的智能投稿状态追踪工具 【免费下载链接】Elsevier-Tracker 项目地址: https://gitcode.com/gh_mirrors/el/Elsevier-Tracker 作为科研工作者&#xff0c;您是否曾因频繁登录Elsevier投稿系统查看审稿进度而感到疲惫&#x…...

青少年抑郁焦虑干预平台怎么选?7大维度对比指南

一、为什么要看这份榜单青少年抑郁焦虑问题已成为当代家庭教育中最棘手的挑战之一。据《2023年度中国精神心理健康》蓝皮书数据&#xff0c;我国青少年抑郁风险检出率约为15%-20%&#xff0c;而焦虑、厌学、社恐等情绪行为问题更为普遍。面对如此庞大的需求&#xff0c;家长在寻…...

Discord Bot接入ChatGPT API:从OAuth2鉴权到流式响应的5步极简落地法

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;Discord Bot接入ChatGPT API&#xff1a;从OAuth2鉴权到流式响应的5步极简落地法 Discord Bot 与 ChatGPT API 的深度集成已不再依赖复杂中间服务——通过原生 OAuth2 授权、事件驱动架构与 SSE 流式解…...

外卖点餐连锁店餐饮生鲜奶茶外卖店内扫码点餐源码同城外卖校园外卖源码的扫码逻辑

&#x1f4f1; 扫码点餐系统 - 完整扫码逻辑 源码示例外卖点餐 | 连锁店 | 餐饮生鲜 | 奶茶 | 店内扫码点餐 | 同城外卖 | 校园外卖&#x1f3af; 扫码业务场景总览场景扫码后行为核心逻辑&#x1f37d;️ 店内扫码点餐进入店铺菜单页识别店铺ID → 加载菜单&#x1f3c3; 外卖…...