写点什么

Apollo 实现 cron 语句的热配置

作者:代码的路
  • 2023-01-13
    江苏
  • 本文字数:853 字

    阅读完需:约 3 分钟

GitHub项目地址


Gitee项目地址


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


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

1 配置 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: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
复制代码


学习更多编程知识,请关注我的公众号:


代码的路



发布于: 刚刚阅读数: 7
用户头像

代码的路

关注

公众号:代码的路 2023-01-10 加入

Java、Python、C++、图像处理、深度学习相关知识分享

评论

发布
暂无评论
Apollo实现cron语句的热配置_Java_代码的路_InfoQ写作社区