首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

xxl-job执行器源码分析

接着调度中心源码开始分析,上一篇中,调度中心触发调度任务之后,发送RPC请求到了服务端,也就是执行器这一边,本篇主要讲执行器这一块接收到请求之后如何处理的

服务端应用里面,实际上是在应用中,内嵌了一个jetty服务器, 服务器在xxlJobExecutor 初始化的时候启动。

本次示例代码中是由spring-boot 中截取而来, 该项目中,由XxlJobConfig 这个配置类来配置Executor

由上面可以看出,初始化 XxlJobExecutor 这个bean之后,会默认执行start 方法

上面初始化的那些方法,着重看 initExecutorServer () 这个方法

看下启动jetty服务器的时候是什么样的

JettyServerHandler 接收请求后的处理流程

通过上面的handle中的代码可以知道,主要的执行逻辑在doInvoke 的方法中,

通过调度中心发过来的参数,以及执行器的处理逻辑,我们有理由可以得出此时是执行的是ExecutorBizImpl中的run方法

通过上面我们可以发现, 执行executorBiz的run 方法的时候, 首先会通过JOBID,从本地线程库里面获取该任务对应的线程,同时,如果任务的JobHandler有更新的话,

那么会自动使用最新的jobHandler , 同时根据任务的阻塞策略。 执行不同的操作。 最终,如果是第一次执行任务的时候,系统会分配给改任务一个线程,同时启动该线程。

接下来,可以在具体看一下JobThread 的run方法,看下最终的任务是如何执行的。

最后来看一下,TriggerCallbackThread.pushCallBack ()这个方法,将本次任务记录的日志ID和处理结果放入队列中去了,

以上就是XXL-JOB从调用到处理的核心代码分析。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180604G0K8WN00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券