xxl-job需要先部署调度中心,执行器需要向调度中心注册,任务也需要再调度中心配置
执行器可以单独部署,也可以嵌入到业务中,下面是执行器部署配置
执行器初始化
XxlJobSpringExecutor实现了SmartInitializingSingleton接口,在初始化完成后了会调用
afterSingletonsInstantiated方法,然后调用到XxlJobExecutor的start方法
embedServer的start方法开启了一个线程,线程中使用了netty监听了参数中传入的端口port
其中还添加了一个EmbedHttpServerHandler,这个是SimpleChannelInboundHandler,这个EmbedHttpServerHandler就是后面处理任务的关键
startRegistry方法就是向调度中心注册自己
会根据配置文件中配置的调度中心地址,请求api/registry接口
uri就是registry,最终会把执行器相关信息存到数据库中
任务调度时,会调用到XxlJobTrigger中的trigger方法
然后会调用到processTrigger方法
然后会调用到runExecutor方法
会调用到ExecutorBizClient的run方法,这个addressUrl如果没指定,则就是执行器配置文件中配置的地址,如果你在调度中心手动执行时指定了,就是你指定的地址
在请求到达执行器时会经过EmbedHttpServerHandler
会根据uri匹配到run,然后会调用到ExecutorBizImpl中的run方法
根据不同的运行模式会进入到不同的调用逻辑
这个是BEAN模式,最终会根据会调到你使用@XxlJob注解声明的方法中