在我们日常开发中,相信定时器都用的不少。
当我们将代码放到测试环境时,测试如何快速测定时任务功能呢?

等到定时器的时间再测试 显然很浪费测试人员的时间,如果每个定时任务提供一个手动接口,那也很浪费开发人员的时间,修改cron 测完后再改回去也是比较麻烦的事情。

我们可以考虑写一个通用接口,执行所有的定时任务:

/*** 手动执行定时任务* @author qkj*/
@Slf4j
@RestController
@Lazy
@RequestMapping("/execute/schedule")
public class ExecuteScheduleController {@Autowiredprivate ApplicationContext applicationContext;@GetMapping("/{methodName}")public String execute(@PathVariable String methodName) {try {Set<Class<?>> scan = ClassScaner.scan("com.xxx.task", Component.class);for (Class<?> eachClass : scan) {Object bean = applicationContext.getBean(eachClass);Method method = eachClass.getMethod(methodName);method.invoke(bean);}} catch (Exception e) {log.error(e.getMessage());return "500";}return "200";}
}

上面代码有几个注意的点:

  1. 推荐使用@Lazy懒加载

  2. 由于schedule定时任务类 是spring的bean,所以获取对象时,不能使用java原生的方式 , 如下:

    反之,如果不是spring的环境,则用该代码

  3. 将所有定时任务放在com.xxx.task包目录下,并用@Component注解修饰定时任务类, 当然这不是很严谨的做法,更正确的做法应该是再配合自定义注解,并将方法名作为参数传入,并且需要校验方法是否属于定时任务方法

代码本身没有什么难度,关键点在于能不能想到这种方式。

tips: 博主后来得知有个开源项目叫 xxl-job ,看了一下它的页面使用,没看源码也能猜个大概,核心功能思路都是差不多的。 优势非常明显:可视化、支持分布式管理; 劣势那自然就是多了些代码 如果采用独立部署的模式 占用了服务器的资源。 感兴趣的同学可以去研究一下

【schedule】立即手动执行定时器任务相关推荐

  1. php artisan 计划任务,Laravel 定时任务 任务调度 可手动执行

    1.创建一个命令 php artisan make:command TestCommand 执行成功后会提示: Console command created successfully. 生成了一个新 ...

  2. 如何在 SAP BTP 上 手动执行 workflow

    官网地址: https://developers.sap.com/tutorials/cp-starter-ibpm-employeeonboarding-5-run.html 访问 SAP Busi ...

  3. oracle定时任务会漂移,定时任务与手动执行脚本时的一个重要注意事项

    今天在linux环境下做了一个定时任务,用java程序到oracle中查询数据, 手动执行脚本没有问题,但是定时任务执行时却一直报错: - java.sql.SQLException: ORA-006 ...

  4. contab 手动可以 java_crontab 定时执行脚本出错,但手动执行脚本正常

    原因: crontab 没有去读环境变量,需要再脚本中手动引入环境变量,可以用source 也可以用export 写死环境变量. 为了定时监控Linux系统CPU.内存.负载的使用情况,写了个Shel ...

  5. crontab执行脚本发邮件中文乱码,手动执行没有问题

    今天写了个脚本,定时给指定邮箱发送邮件,手动执行的时候没有问题,但添加到计划任务后发送的邮件就中文乱码,变成一个不知名的附件形式: 上网查了下原因 产生原因: 这是因为Unix/Linux下使用cro ...

  6. Salesforce系列(十):Salesforce Schedule cron定时执行方法!

    Salesforce系列(十):Salesforce Schedule cron定时执行方法! 前言 今天博主将为大家分享Salesforce系列(十):Salesforce Schedule cro ...

  7. Qt在手动执行xxx.exe时报错:由于找不到Qt5xxx.dll,无法继续执行代码。重新安装程序可能解决此问题。

    一.问题描述. Qt在手动执行xxx.exe时报错:"由于找不到Qt5xxx.dll,无法继续执行代码.重新安装程序可能解决此问题.". 二.问题分析. 执行程序依赖库文件Qt5x ...

  8. crontab python不生效_crontab运行python不生效,但是手动执行正常的问题和解决方案...

    crontab运行python不生效,但是手动执行正常的问题和解决方案 linux默认装的是python2.7,安装了其他版本后直接执行没问题,但在crontab里执行不了,需要使用全路径. 使用 w ...

  9. Linux Crontab定时执行脚本出错,但手动执行脚本正常原因及解决方案

    Linux Crontab定时执行脚本出错,但手动执行脚本正常原因及解决方案 实际开发场景 需要开发一个Flink监控程序,初步使用shell脚本进行监控,如果发现失败了,则自动重新运行Flink命令 ...

最新文章

  1. 51年被发现9次,陶哲轩证明的公式成了重复造轮子?事情并没有这么简单
  2. mysql的limit性能优化
  3. 用python画关系网络图-python networkx 包绘制复杂网络关系图的实现
  4. 网络带宽和速度测试windows和linux iperf工具
  5. redhat linux下安装oracle10g rac,RedHat 5.5下安装Oracle 10g+RAC
  6. 重读经典:《ImageNet Classification with Deep Convolutional Neural Networks》
  7. 深度挖掘论文:《Semantic Soft Segmentation》(语义软分割)
  8. 微拍堂推出“正义联盟计划” 助力文玩行业高质量发展
  9. 基于JAVA+SpringMVC+Mybatis+MYSQL的停车预约管理系统
  10. 麦子学院demo(html+css)
  11. Android禁用系统更新
  12. 宝塔解析域名至8000端口(多url)
  13. Latex排版论文MiKTeX与Texmaker 配置使用及宏包的下载
  14. [小说]魔王冢(48)诏告
  15. 史上最全WindowsMac系统各种快捷键大全(1000余个)
  16. 网页底部版权信息如何注明?
  17. Ae:形状图层的内容添加
  18. OSChina 周二乱弹 ——追妹子最管用的方式
  19. 小猪佩奇python_python3 案例分享--小猪佩奇
  20. 陶瓷电路板与常规PCB板的区别

热门文章

  1. Flutter2 来了!!!
  2. FileStream文件流的使用
  3. Yes I can——强兵是怎样炼成的
  4. 服务器升级中怎么修改个性签名,王牌竞速个人签名怎么更改 签名更改攻略
  5. Python匹配邮箱号的正则表达式
  6. 编程语言简史(转自码农)
  7. 怎样摆脱Linux系统菜鸟头衔
  8. 软件工程师头衔的那些事儿
  9. SF1004-MHCHXM超快恢复二极管SF1004
  10. 车载摄像头输出的信号列表