Apollo实现cron语句的热配置

简介: Apollo实现cron语句的热配置

原文链接

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.propertiesapollo.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

 
 

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

代码的路

相关文章
如何生成RSA,RSA2密钥
密钥生成或如何使用(创建应用):[url]https://openclub.alipay.com/read.php?tid=1606&fid=72[/url] 1.密钥生成工具下载:[url]https://docs.
2324 13
|
6月前
|
数据采集 弹性计算 供应链
阿里云服务器ECS包年包月、按量付费和抢占式实例有什么区别?如何选择更省钱?
阿里云ECS提供包年包月、按量付费和抢占式实例三种计费模式。包年包月适合长期稳定使用,价格优惠,支持备案;按量付费按小时计费,灵活但成本较高,适合短期或突发业务;抢占式实例价格低至1折,但可能被自动释放,适合无状态应用。根据使用场景选择更省钱。
251 3
DC电源模块的散热影响到体积与转换率
DC电源模块的散热影响到体积与转换率。
|
SQL 数据库连接 API
SqlAlchemy 2.0 中文文档(二十八)(5)
SqlAlchemy 2.0 中文文档(二十八)
765 0
|
数据采集 Prometheus 算法
Web 中间件怎么玩?
Web 中间件怎么玩?
572 0
|
人工智能 前端开发 安全
免费的才是最贵的:阿里AntD圣诞节“踩蛋”事件
Ant Design 是由蚂蚁金服开源的一款前端设计框架。使用开源框架的好处就是我们之前提过的“避免重复造轮子”,可以很轻松地搭建出美观易用的网页/移动页面。比如按钮,它会给你很多预设好的按钮样式选择,拿来就用,无需你自己去费时间设计和实现。
|
机器学习/深度学习 传感器 算法
3D目标检测(毕业设计+代码)
3D目标检测(毕业设计+代码)
|
JavaScript
全面了解Vue3的 ref 以及相关函数和计算属性
全面了解Vue3的 ref 以及相关函数和计算属性
602 0
全面了解Vue3的 ref 以及相关函数和计算属性
|
前端开发 JavaScript
jquery.validate[.unobtrusive]和Bootstrap实现tooltip错误提示
类似的文章园子里已有,请看这里,个人感觉稍显复杂,日前也打算写一个简单的给项目用,一些关键点记录于此。最终效果如下: 后端使用Asp.net mvc5,前端框架有:jquery.validate、jquery.validate.unobtrusive、requirejs、Bootstrap,都是当前最/较新版本。
1313 0