利用redis的key失效监听器KeyExpirationEventMessageListener作任务定时提醒功能

news/2024/11/16 10:36:05/

某需求:
要求在任务截止日期的前3天时,系统自动给用户发一条消息提醒。
用定时任务的话感觉很不舒服。间隔时间不好弄。不能精准卡到那个点。
由于系统简单,没有使用消息列队,也不能使用延时队列来做。
用Timer的话开销还挺大的,多个应用节点的话还要用分布式锁来处理重复发送问题。
后面想到了KeyExpirationEventMessageListener这玩意。正好用了redis。用来做这种周边要紧不要紧,应标的小需求最合适不过了。

做法也简单
任务生成后,将 applicationName+任务id弄个key丢到redis中,设置一个3天的过期时间。时间一到,KeyExpirationEventMessageListener监听到这个key。再用读到的id发个消息。用个乐观锁什么的去个重。简单弄下完事了。
简单示意图:
在这里插入图片描述


http://www.ppmy.cn/news/1547425.html

相关文章

Java集合(Collection+Map)

Java集合&#xff08;CollectionMap&#xff09; 为什么要使用集合&#xff1f;泛型 <>集合框架单列集合CollectionCollection遍历方式List&#xff1a;有序、可重复、有索引ArrayListLinkedListVector&#xff08;已经淘汰&#xff0c;不会再用&#xff09; Set&#xf…

深度学习中的Pixel Shuffle和Pixel Unshuffle:图像超分辨率的秘密武器

在深度学习的计算机视觉任务中&#xff0c;提升图像分辨率和压缩特征图是重要需求。Pixel Shuffle和Pixel Unshuffle是在超分辨率、图像生成等任务中常用的操作&#xff0c;能够通过转换空间维度和通道维度来优化图像特征表示。本篇文章将深入介绍这两种操作的原理&#xff0c;…

Verilog HDL学习笔记

Verilog HDL&#xff08;Hardware Description Language&#xff09;是在一种硬件描述语言&#xff0c;类似于计算机的高级编程设计语言&#xff0c;它具有灵活性高&#xff0c;容易学习和使用等特点&#xff0c;同时Verilog能够通过文本的形式来描述数字系统的硬件结构和功能。…

AVL树了解并简单实现

这篇文章默认知道二叉搜索树&#xff0c;如果了解并不多可以先看看二叉搜索树了解和实现-CSDN博客 目录 1.AVL树概念 2.AVL树节点定义 3.AVL树的插入&#xff08;重点&#xff09; 3.1AVL树 3.2AVL树的旋转 3.3AVL树插入代码 4.AVL树的验证 5.AVL树的删除 6.AVL树的性能…

交换排序——冒泡排序

交换排序——冒泡排序 7.6 交换排序——冒泡排序冒泡排序概念参考程序冒泡排序的特性总结 7.6 交换排序——冒泡排序 交换排序基本思想&#xff1a;所谓交换&#xff0c;就是根据序列中两个记录键值的比较结果来对换这两个记录在序列中的位置&#xff0c;交换排序的特点是&…

一键生成本地SSL证书:打造HTTPS安全环境

一键生成本地SSL证书&#xff1a;打造HTTPS安全环境 日光下的寒林没有一丝杂质&#xff0c;空气里的冰冷仿佛来自故乡遥远的北国&#xff0c;带着一些相思&#xff0c;还有细微几至不可辨认的骆驼的铃声。–《心美&#xff0c;一切皆美》 在本地开发环境中启用 HTTPS 一直是许多…

Day 65 || SPFA、判断负权回路、bellman_ford之单源有限最短路

Bellman_ford 队列优化算法&#xff08;又名SPFA&#xff09; 题目链接&#xff1a;卡码网&#xff1a;94. 城市间货物运输 I 思路&#xff1a;具体参考“代码随想录——Bellman_ford 队列优化算法&#xff08;又名SPFA&#xff09;”&#xff0c;主要的思想是在Bellman_ford…

自定义实体类中DateTime属性的序列化格式

目录 一、Newtonsoft.Json下自定义DateTime序列化格式器 1. 定义DateFormatConverter 2. 在实体上使用自定义的DateFormatConverter特性 二、System.Text.Json下自定义DateTime的序列化格式器 1. 定义DateTimeConverter 2. 定义DateTimeJsonConverter特性 3. 在实体上使…