瓜瓜醒 2021-03-27 11:11 采纳率: 0%
浏览 209

quartz是否支持大批量的实现自定义时间规则进行任务调度

问题描述

用户自定义提醒时间, 举例一个例子,用户添加一个练习设置每周一15:30提醒,用户可以修改提醒时间,新增提醒时间,删除提醒时间,提醒量大的时候,基本等于每分钟都可能存在提醒,使用quartz是否支持大批量的实现自定义时间规则进行任务调度或者有没有其他好的解决方法

问题出现的环境背景及自己尝试过哪些方法

 

我们用的是quartz定时调度,先说下我的思路:
首先有三张表,一张是练习表:practice,另一张是消息提醒表:notice_remind,他们的关系是 一对多
另外一张是: 记录quartz的动态cron表达式表 sys_job
方式一. 用户添加的每一条提醒先插入到提醒表里边,根据选择的周期规则以及时间计算出cron表达式,同步到quartz中的sys_job表 ,
JOB_NAME : 对应提醒的主键id
JOB_GROUP: 对应练习Id
到时刻自动提醒
好处: ①. 修改时间即修改cron表达式,重新在加入到quartz中,也很方便,
②. 删除提醒时间,同时停止这个定时任务也很方便
坏处: ①.对于用户来说,可能存在多个cron表达式相同的问题,在同一时间多次触发同一个job,但是不知道会带来一些其他的问题,定时任务多的时候quartz能否支撑柱,对于服务端来说是否太占用资源

方式二. 在计算出cron表达式的时候,基于这个cron表达式看数据库有没有(这里说明一下由于定义的规则有限(每天,工作日,每周一,每周二…每周日),cron表达式肯能会出现相同的情况),有的话,在sys_job表里边的job_data_map字段记录当前练习的id,多个用逗号分隔例如:(1,2,3,4,5…)
到时刻触发的的时候基于获取job_data_map对应的练习id,查询练习表,组装参数发送提醒

好处: ①. 相对于方法一,可能会节省数据库存储,并且不会在同一时刻多次触发同一个job
坏处: ②. 修改的时候比较麻烦,需要将原先 job_data_map字段记录的练习id剔除,并且新增一条
③. 删除的时候同理

 

  • 写回答

2条回答 默认 最新

  • 三岁丫 2021-03-27 21:40
    关注

    看了一下,其实方式二的话,已经可以了,适合业务的就行了。非要说的话,其实就是可以用一个任务每秒钟触发一次,它的任务就是检查有没有需要通知的,然后再发送通知消息啥的,如果用户时间填的很散的话,那么就需要生成大量的定时任务,其实不方便维护。

    评论

报告相同问题?

悬赏问题

  • ¥30 YOLO检测微调结果p为1
  • ¥20 求快手直播间榜单匿名采集ID用户名简单能学会的
  • ¥15 DS18B20内部ADC模数转换器
  • ¥15 做个有关计算的小程序
  • ¥15 MPI读取tif文件无法正常给各进程分配路径
  • ¥15 如何用MATLAB实现以下三个公式(有相互嵌套)
  • ¥30 关于#算法#的问题:运用EViews第九版本进行一系列计量经济学的时间数列数据回归分析预测问题 求各位帮我解答一下
  • ¥15 setInterval 页面闪烁,怎么解决
  • ¥15 如何让企业微信机器人实现消息汇总整合
  • ¥50 关于#ui#的问题:做yolov8的ui界面出现的问题