0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Apollo实现cron语句的热配置

Java开发 来源:代码的路 作者:代码的路 2023-01-13 16:02 次阅读

原文链接

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
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • JAVA
    +关注

    关注

    19

    文章

    2904

    浏览量

    102994
  • Apollo
    +关注

    关注

    5

    文章

    326

    浏览量

    18293
  • GitHub
    +关注

    关注

    3

    文章

    457

    浏览量

    15923
收藏 人收藏

    评论

    相关推荐

    cron和crontab命令

    本帖最后由 windworld 于 2016-2-24 14:08 编辑 cron机制cron可以让系统在指定的时间,去执行某个指定的工作,我们可以使用crontab指令来管理cron机制
    发表于 02-24 13:33

    GATT的notify方式配置语句疑惑?

    GATT的notify方式配置语句疑惑?GATT的notify方式比read、write方式的配置多一条语句:static gattCharCfg_t simpleProfileCha
    发表于 04-01 10:01

    如何对Apollo2.5 CANBUS进行全面调试?

    前言:CANBUS是Apollo需要根据你的底盘写代码的地方,感觉也是Apollo最难调试的部分。这部分首先要选好CAN卡,因为不是Apollo推荐的CAN卡,驱动程序和对应接口,可能都需要自己调整
    发表于 08-30 06:02

    apollo2 mcu开发的相关资料分享

    Apollo2 MCU的核心是一个32位的ARM Cortex-M4内核,带有浮点选项。ARM v7-M体系结构的3个阶段的流水线实现以非常低的功耗设计提供了高效的处理。ARM M DAP通过串口线
    发表于 11-01 07:23

    apollo2外挂的32.768kHz的晶振不起振的原因

    ,由于厂家生产原因,导致apollo2外挂的32.768kHz的晶振不能起振 Apollo2时钟源解析 Apollo2定时器解析 代码实现...
    发表于 11-04 06:21

    Ambiq Apollo4的相关资料推荐

    今天翻官方的网站,发现了 Apollo4 的链接。从其中下来Apollo3-Apollo4-SDK-2020.06.20,发现了\boards\apollo4_eb\examples\u***\tinyu***_cdc这个不错,
    发表于 12-13 08:30

    Apollo Heritage版音频接口附带的插件

     Universal Audio在去年推出的Apollo Heritage版音频接口提供了5个或10个获奖的UAD插件,包括Teletronix®、Fairchild®、Pultec®、Helios
    发表于 01-24 08:59

    在STM32F429-Apollo开发板配置以太网报错怎么办

    在正点原子开发板 STM32F429-Apollo开发板,配置以太网,报错“pcf8574.h:61:47: error: unknown type name 'uint8_t'”,i2c和标准c组件都已经加上了,还需要加什么组件?
    发表于 09-21 11:04

    开关语句和循环语句

    switch/case开关语句是一种多分支选择语句,是用来实现多方向条件分支的语句。虽然从理论上讲采用条件语句也可以
    发表于 07-15 14:26 18次下载

    Apollo计算平台配置经验分享:5000元搞定

    成功运行Apollo环境需要购买多少钱的设备?
    的头像 发表于 03-07 14:28 1w次阅读

    PHP简单实现不依赖于Unix系统Cron的定时任务程序资料说明

    本文档的主要内容详细介绍的是PHP简单实现不依赖于Unix系统Cron的定时任务程序资料说明。
    发表于 03-01 16:52 2次下载
    PHP简单<b class='flag-5'>实现</b>不依赖于Unix系统<b class='flag-5'>Cron</b>的定时任务程序资料说明

    apollo系列之apollo2 mcu开发(基础篇)之1.1-apollo2 mcu简介

    更多内容在:apollo系列汇总Apollo2 mcu的架构
    发表于 10-25 17:36 19次下载
    <b class='flag-5'>apollo</b>系列之<b class='flag-5'>apollo</b>2 mcu开发(基础篇)之1.1-<b class='flag-5'>apollo</b>2 mcu简介

    如何动态修改cron参数呢?

    按正常来讲,修改定时任务的执行周期,把服务停下来,改下任务的cron参数,再重启服务就搞搞定了。这种方式很简单,没有可说的,但是有没有一种可能,在不停服务的情况下,就可以动态的修改任务的cron参数呢?哈哈,那是必须的必。
    的头像 发表于 04-12 11:04 1545次阅读

    条件语句/循环语句simulink的实现方法(一)

    条件语句和循环语句是计算机编程中常用的两种控制结构
    的头像 发表于 07-21 16:48 6482次阅读
    条件<b class='flag-5'>语句</b>/循环<b class='flag-5'>语句</b>simulink的<b class='flag-5'>实现</b>方法(一)

    assign语句和always语句的用法

    Assign语句和Always语句是在硬件描述语言(HDL)中常用的两种语句,用于对数字电路建模和设计。Assign语句用于连续赋值,而Always
    的头像 发表于 02-22 16:24 485次阅读