Apollo实现cron语句的热配置-crontab 每30秒执行一次

原文链接

GitHub项目地址

Gitee项目地址

Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景。

Apollo 与 properties 配置文件的功能相同,都可以设置参数。Apollo 的优点在于,可以实时修改参数的值,而不需要重启项目。

1 配置 Apollo

本地配置 Apollo 的方式参考:

Apollo本地快速部署

2 添加 Apollo 参数

在Apollo中添加参数:

复制param.cron_test1=0/5 * * * * ? param.cron_test2=0/5 * * * * ?

要实现 Apollo 对定时任务 cron 语句的热配置,需要使用复制ScheduledTaskRegistrar。

具体方式如下:

复制@Override public void configureTasks(ScheduledTaskRegistrar taskRegistrar) { Runnable runnable = () -> { System.out.println(“cron_test:” + cron_test); }; Trigger trigger = triggerContext -> { CronTrigger cronTrigger = new CronTrigger(cron_test); return cronTrigger.nextExecutionTime(triggerContext); }; taskRegistrar.addTriggerTask(runnable , trigger ); } @Override public int getOrder() { return 0; }

完整项目地址:

GitHub地址:https://github.com/Snowstorm0/learn-apollo-cron

Gitee地址:https://gitee.com/Snowstorm0/learn-apollo-cron

在运行项目之前需要修改 复制resource/application.properties 中 复制apollo.meta 的值,将 复制localhost 替换为 复制apollo 的地址,端口号为 Eureka 的端口号(默认为8080)。

运行该项目,可以看到输出:

复制cron_test1:0/5 * * * * ? current_time1:10:53:13 cron_test2:0/5 * * * * ? current_time2:10:53:13

在 Apollo 中将 cron 语句改为 复制0/10 * * * * ?,不需要重启,即可看到项目的输出变为:

复制cron_test1:0/10 * * * * ? current_time2:10:54:05 cron_test2:0/10 * * * * ? current_time1:10:54:05

免责声明:文章内容来自互联网,本站不对其真实性负责,也不承担任何法律责任,如有侵权等情况,请与本站联系删除。
转载请注明出处:Apollo实现cron语句的热配置-crontab 每30秒执行一次 https://www.yhzz.com.cn/a/5015.html

上一篇 2023-04-11 12:59:55
下一篇 2023-04-11 13:22:01

相关推荐

联系云恒

在线留言: 我要留言
客服热线:400-600-0310
工作时间:周一至周六,08:30-17:30,节假日休息。