我的需求场景:
用户自定义 提醒,可以设定1-N个任意时间点,如 8:00 ,14:22,15:38(每天在这几个时间点执行任务)。
用户可以自定义增删这些时间点
多个用户之间时间是有可能有重叠。比如A用户设置了 8:00 ,14:22,B用户也设置了 8:00 ,14:22
和定闹钟类似,时间是没有规律的
如何配置,如何操作?
大概的流程是什么?
xxl_job 数据库中的xxl_job_info表中的job_cron字段存的就是定时时间,你在重新中只需要改动这个值,获取这个值就可以在任何地方自定义定时时间了。
1.就是用户在新增闹钟13:00时,在xxl_job_info表中插入一条数据,字段job_cron为 0 0 0 13..
2如果用户再增加14:22, 在xxl_job_info表中再插入一条数据,job_cron为 0 0 0 14..
是这样吗
另一个人跟我说XXL-job必须设定一个频率,比如5分钟执行一次代码。会有重复执行问题。如何防止重复执行?
她问我:定时频率多少?
我不太明白,我感觉XXL-JOB只需要存入多个cron表达式,就行了,为什么要要设什么定时频率。我们这个场景的时间是没有规律的。
为什么要搞每隔5分钟执行XX,为什么要搞得这样复杂?
现在我们的解决办法:在表里增加字段【上次提醒时间】来看之前是否已执行
感觉有点不对,应该不用这么麻烦把?
@待永: 0 0 13 * * ?
@悟行: cron表达式我随便写的,这个不重要哈。
@悟行: 1.就是用户在新增闹钟13:00时,在xxl_job_info表中插入一条数据,字段job_cron为 0 0 0 13..
2如果用户再增加14:22, 在xxl_job_info表中再插入一条数据,job_cron为 0 0 0 14..
是这样吗
另一个人跟我说XXL-job是默认5分钟执行一次代码。会有重复执行问题。如何防止重复执行?
她问我:定时频率多少?
我不太明白,我感觉XXL-JOB只需要存入多个cron表达式,就行了,为什么要要设什么定时频率。我们这个场景的时间是没有规律的。
为什么要搞每隔5分钟执行XX,为什么要搞得这样复杂?
现在我们的解决办法:在表里增加字段【上次提醒时间】来看之前是否已执行
感觉有点不对,应该不用这么麻烦把?
@待永: 我没有遇到默认5分钟执行一次代码的情况,我估计也没有,你可以测试一下
@悟行:
我之前的意思不对。
是这样
另一个人跟我说XXL-job必须设定一个频率,比如设定5分钟执行一次代码。
为什么一定要设定一个频率?
时间本来就是不规律,为什么要设定一个频率,是不是方向搞错了?
是不是xxl_job_info表的字段shedule_type应该用cron,而不是用fix_rate。是他没注意到另一种方式?
@待永: 总得要个触发条件执行你的程序,而定时任务就是按照一定的时间频率执行的,如果你的需求是不规律执行,那只能说你的需求不符合定时任务实现了;
@待永: 你也可以每个月底执行,每个星期几执行,每年什么时候执行,很灵活,但是都是有时间规律的执行;
@悟行:
我的需求场景:
用户自定义 提醒,可以设定1-N个任意时间点,如 13:00 ,14:00,15:38(每天在这几个时间点执行任务)
这个是叫有规律,还是没规律呢?就几个CRON的动态组合
用户可以自定义增删这些时间点
这么一个简单的功能,XXL-JOB都无法实现吗?
@待永: 这个很容易啊,设置N个定时任务,都指向一份代码,每个定时任务对应一个时间;
例如:13:00 一个定时任务;14:00 一个定时任务; 15:38一个定时任务,都指向一份代码;
就这么简单
@悟行: 如何设置呢?在XXL-JOB管理后台手工设置?应该是从数据库读取?
那我只要在xxl_job_info,插入3条记录就可以了?
13:00 一个定时任务;14:00 一个定时任务; 15:38一个定时任务
分别为这3个插入3条记录?每条记录有一个cron表达式?
@待永: 是的,你把问题想复杂了
@悟行: 之后的XXLJOB执行流程呢?
XXL JOB每隔5分钟扫描这个表的记录?还是只要插入一条,XXL JOB马上记住。
之后没有重复执行任务的问题吧?
@悟行: 那根本不应该在XXL-JOB配置 定时频率或CRON?如果是这样,那方向搞错了