GitHub項目地址
(資料圖片)
Gitee項目地址
Apollo(阿波羅)是攜程框架部門研發的分布式配置中心,能夠集中化管理應用不同環境、不同集群的配置,配置修改后能夠實時推送到應用端,并且具備規范的權限、流程治理等特性,適用于微服務配置管理場景。
Apollo 與 properties 配置文件的功能相同,都可以設置參數。Apollo 的優點在于,可以實時修改參數的值,而不需要重啟項目。
本地配置 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:13cron_test2:0/5 * * * * ?current_time2:10:53:13在 Apollo 中將 cron 語句改為 0/10 * * * * ?,不需要重啟,即可看到項目的輸出變為:
cron_test1:0/10 * * * * ?current_time2:10:54:05cron_test2:0/10 * * * * ?current_time1:10:54:05 標簽: