elastic-job调度任务分析

elastic-job调度任务分析导语分析 ejob 怎样扩展 quartz 根据上图发现 在创建 JobDetail 时指定了 LiteJob 并注入了其 jobExecutor 属性 quartz 启用调度 最终会触发调用 ElasticJobEx execute 方法通过配置 quartz 配置 SimpleThread 的线程数为 1 1 每个定时任务分配一个单线程池 ElasticJobEx execute 执行作业任务 重点 从缓存中加载作业配置 从 zk 中加载 检查是否需要加载可重新加载的项目 2 1 可重

分析ejob怎样扩展quartz

在这里插入图片描述
在这里插入图片描述

  1. 根据上图发现,在创建JobDetail时指定了LiteJob,并注入了其jobExecutor属性
  2. quartz启用调度,最终会触发调用ElasticJobExecutor#execute方法
    在这里插入图片描述
  3. 通过配置quartz配置SimpleThreadPool的线程数为1
    (1)每个定时任务分配一个单线程池

ElasticJobExecutor#execute执行作业任务(重点)

在这里插入图片描述

  1. 从缓存中加载作业配置(从zk中加载)
  2. 检查是否需要加载可重新加载的项目
    2.1 可重新加载的项如下图
    在这里插入图片描述
    2.2 以线程池重新加载为例分析
    (1)对比作业配置和ExecutorServiceReloadable的jobExecutorServiceHandlerType,如果发生变化,则重新加载
    (2)线程池重新调整:ExecutorServiceReloadable#reload




  3. guava上发布JobStatusTraceEvent事件(任务启动中状态)
    3.1 TracingListener#listen方法接收订阅(@Subscribe)
  4. 在任务执行前,遍历任务监听器,并执行其beforeJobExecuted方法
  5. 任务执行:execute(jobConfig, shardingContexts, ExecutionSource.NORMAL_TRIGGER)(下面会详细分析)
  6. 在任务执行后,遍历任务监听器,并执行其afterJobExecuted方法
    在这里插入图片描述

ElasticJobExecutor#process(重点)

  1. 获取分片项,初始化分片数量的CountDownLatch(保证所有分片任务一起执行完)
  2. 遍历分片项,将处理任务提交到线程池中
    在这里插入图片描述
    在这里插入图片描述

线程任务详情

在这里插入图片描述
4. 发布任务执行开始事件:JobExecutionEvent
5. 执行业务代码逻辑
6. 发布任务执行结束事件


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/227548.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月16日 下午9:04
下一篇 2026年3月16日 下午9:04


相关推荐

  • ios分发平台搭建_app分发下载

    ios分发平台搭建_app分发下载iOS的内侧包管理,内部分发,或者企业包的分发和Android略有不同,需要通过manifest文件以及Safari内置命令来触发安装。

    2025年5月26日
    5
  • 【C++】0314算法阿里笔试题「建议收藏」

    【C++】0314算法阿里笔试题「建议收藏」一、题目二、自己的dfs的题解#include<bits/stdc++.h>usingnamespacestd;intres3=INT_MAX;inttransfet(vector<string>&tmp){intsum=0;for(auto&t:tmp){sum+=stoi(t);}returnsum;}voiddfs(stringstr,vector&l

    2025年10月9日
    6
  • 15个漂亮的企业网站设计案例欣赏

    15个漂亮的企业网站设计案例欣赏您可能感兴趣的相关文章寻找网页设计灵感的 27 个最佳网站推荐分享 35 个非常漂亮的单页网站设计案例 60 佳灵感来自大自然的网页设计作品欣赏分享 45 款高质量的免费 HTML CSS 模板最新 30 佳精美 PSD 网站模板免费下载 nbsp 如今 几乎每家公司都有自己的企业网站 用于展现公司的专业形象 向客户准确的传递公司的产品和品牌 今天这篇文章与大家分享 40 个漂亮的企业网

    2026年3月20日
    2
  • 小程序 轮播图之自动适应宽高度

    小程序 轮播图之自动适应宽高度以微信小程序为例:wxml文件:<!–1.轮播图外层容器swiper2.每一个轮播项swiper-item3.swiper标签存在默认样式1.width100%2.height150pximage存在默认宽度和高度320*2403.swiper高度无法实现由内容撑开4.先找出来原图的宽度和高度等比例给swiper定宽度和高度原图的宽度和高度750x300swiper宽度/.

    2022年5月21日
    42
  • pycharm 换行_pycharm自动换行快捷键

    pycharm 换行_pycharm自动换行快捷键python脚本有时一行代码写的非常长,一个屏幕塞不下,左右拉动滚动条视觉不友好。第一种方法:python里有换行标识”\”,如jfdb=spark.read.format(“jdbc”).option(“driver”,mysql_driver).option(“url”,mysql_url).option(“dbtable”,”xxxxxxxxxxxxxxxxxxxxxxxx”).option(“user”,mysql_acount).option(“password”,mysql_pa

    2022年8月28日
    6
  • 如何添加smtp服务器_smtp服务器设置

    如何添加smtp服务器_smtp服务器设置在现在这个时代中,人们传输信息基本上都是用邮件传输,那么你知道电脑之间是怎么用邮件传输的么。就是通过smtp服务器,通过这个服务器,人们可以把自己写的东西通过邮件经过这个服务器传输到你想让邮件传输到的地方,接下来就让小编好好给大家介绍一下。Smtp传输器是什么?Smpt的意思是简单的邮件传输协议,它是一组用于源地址到目的地传送邮件的规则,并且由它决定邮件的中转方式。Smtp传输器使用由tcp提供的…

    2026年4月15日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号