美文网首页Java工具
Apollo实现cron语句的热配置

Apollo实现cron语句的热配置

作者: 代码的路 | 来源:发表于2023-01-09 10:30 被阅读0次

    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: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语句的热配置

        本文链接:https://www.haomeiwen.com/subject/flbucdtx.html