为了账号安全,请及时绑定邮箱和手机立即绑定

elastic job作业初始化 - 更新作业配置

标签:
JavaScript

elastic job通过下面代码启动作业:

new JobScheduler(createRegistryCenter(), createJobConfiguration()).init();

启动作业过程中,首先会更新作业配置:

LiteJobConfiguration liteJobConfigFromRegCenter = schedulerFacade.updateJobConfiguration(liteJobConfig);

该方法会做两件事情:
1、当前实例作业配置持久化到zk;
2、从zk重新加载作业配置覆盖当前实例作业配置。

持久化配置

configService.persist(liteJobConfig);

持久化配置时首先会校验作业配置信息:判断zk是否包含当前作业配置,如果存在且实现类不一致时,抛出异常:

throw new JobConfigurationException("Job conflict with register center. The job '%s' in register center's class is '%s', your job class is '%s'", liteJobConfig.getJobName(), liteJobConfigFromZk.get().getTypeConfig().getJobClass(), liteJobConfig.getTypeConfig().getJobClass());

校验通过后,以下两种情况会已当前实例作业配置覆盖zk作业配置:

zk不存在该作业配置;
zk存在,但作业配置包含需要覆盖zk作业配置属性(overwrite = true)

if (!jobNodeStorage.isJobNodeExisted(ConfigurationNode.ROOT) || liteJobConfig.isOverwrite()) {    // 覆盖zk作业配置
}

持久化作业配置即把LiteJobConfiguration对象转换为json格式,然后创建zk节点jobName/config,值为转换后的json数据。

重新加载配置

持久化作业配置后,当前实例会重新从zk服务器加载最新的作业配置信息,且不使用缓存。

configService.load(false);

该方法会直接从zk节点jobName/config获取数据(json格式),而后把原始数据转换为LiteJobConfiguration对象,并覆盖本地配置。

流程图

webp

更新作业配置



作者:耶也夜
链接:https://www.jianshu.com/p/c584aeee2077


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

举报

0/150
提交
取消