基于Redis在定时任务里判断其他定时任务是否已经正常执行完的方案

执行的定时任务是基于其他定时任务计算得到的结果基础上做操作的,那么如何来确定其他存在数据依赖的定时任务已经执行完成呢?

在分布式环境里,可通过集群的redis来解决这个问题:

即,在跑批任务开始时,将任务key+当日凌晨时间组成的key值进行加1,例如:

1 redisOperator.getJedis().incr(key+ startDateStr);
2 redisOperator.setKeyExpireTime(key+ startDateStr, 60*60*24);

跑批完成后,再将任务key+当日凌晨时间组成的key值减1,例如:

1 //跑批结束后自减
2 redisOperator.getJedis().decr(key+ startDateStr);

正常任务执行完,redis里对应的应该状态是0。

 1 //阻塞循环,一直等到另外的定时任务跑成功了,才继续。
 2 while (!checkCanRun(reportTime)) {
 3     int interval = 7200000;
 4     long sleepTime = System.currentTimeMillis();
 5     //休眠
 6     logger.info("sendOperationDailyReportHandler sleep time = " + TimeUnit.MILLISECONDS.toSeconds(System.currentTimeMillis()-sleepTime) + " seconds");
 7     Thread.sleep(interval);
 8 }
 9 
10 
11 private boolean checkCanRun (DateTime reportTime) {
12 
13     String runningFinishKey = redisOperator.getValueByKey(key + dateStr);
14 
15     if ("0".equals(runningFinishKey )) {
16         return true;
17     }
18     return false;
19 }

相关推荐

  1. windows执行定时任务

    2023-12-11 09:34:01       8 阅读
  2. Linux 使用 cron 定时执行任务注意事项

    2023-12-11 09:34:01       9 阅读
  3. springboot自定义cron定时任务执行

    2023-12-11 09:34:01       38 阅读
  4. mac笔记本执行定时任务

    2023-12-11 09:34:01       20 阅读
  5. C#实现定时执行任务

    2023-12-11 09:34:01       8 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-11 09:34:01       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-11 09:34:01       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-11 09:34:01       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-11 09:34:01       20 阅读

热门阅读

  1. 【无标题】

    2023-12-11 09:34:01       41 阅读
  2. 什么是css初始化

    2023-12-11 09:34:01       41 阅读
  3. leetcode每日一题38

    2023-12-11 09:34:01       40 阅读
  4. 在Vue 3中如何禁止网页返回到上一页

    2023-12-11 09:34:01       28 阅读
  5. Python基础期末复习 新手

    2023-12-11 09:34:01       40 阅读
  6. 程序员常用英文单词

    2023-12-11 09:34:01       25 阅读
  7. android-xml语法

    2023-12-11 09:34:01       34 阅读
  8. MapReduce

    2023-12-11 09:34:01       25 阅读
  9. 华为鸿蒙HarmonyOS应用开发者高级认证试题及答案

    2023-12-11 09:34:01       143 阅读
  10. web项目创建流程框架

    2023-12-11 09:34:01       42 阅读
  11. 《C++新经典设计模式》之第15章 适配器模式

    2023-12-11 09:34:01       30 阅读
  12. C++(14):获取类型在tuple中的索引

    2023-12-11 09:34:01       32 阅读