xxl-job学习过程

xxl-job分布式任务调度平台

  • XXL-JOB
    • 官方文档
    • 调度中心
      • cron
      • Bean和GLUE
    • 执行器
    • 遇到的问题
      • java.net.BindException: Address already in use: bind
      • Bean方法下绑定不到对应handler的任务

XXL-JOB

简单的理解,一个任务调度平台,并且支持分布式。如同java内schedule一样,一个设置定时触发的任务,并且支持内嵌和即时编写。在整个平台,分为调度中心和执行器。就是一个领导和多个员工。

官方文档

挺难懂得如果新接触,不过自己跟着官方文档做了一天很多不理解的地方都能明白了,也推荐新学的小伙伴跟着做
官方中英文文档
而且在你使用该平台时,可以从官方下载调度中心以及相关页面控制,还有示例控制器帮助理解,以构建适合自己的不同控制器

调度中心

因为是要支持分布式,那么必定有一个控制中心,在调度中心首先需要绑定控制器,然后新增任务,设置各项数据和执行时间,按照设定好的参数去使用执行器,执行器可以分在多个不同的机器,而且对于任务支持很多分布式策略,完成所有功能。设置任务的前提一定要绑定执行器。

cron

说好是任务调度,那肯定要规定多久调度一次或者循环调度,xxl-job使用cron表达式,来编写你所需要的调度方案
这个cron很难看懂,找了一个比较详细的资料以后继续学吧。但是在官方设置好的调度中心是不需要你自己去写表达式的,官方有做相应计算表达式的交互界面,直接选择就好了,十分方便。

https://www.cnblogs.com/junrong624/p/4239517.html

Bean和GLUE

前面讲到xxl-job支持内嵌执行器任务和即时编写任务,就是通过两种方式设置任务。
Bean方式是通过设定对应的handler,绑定到对应执行器的任务类,实现任务功能。对于bean是一对一绑定关系而且是绑定一个类,不同任务可以绑定同一控制器不同类,执行不同的任务。Bean方法绑定不同继承于IJobHandler的handler类。

GLUE是在服务端上即时编写查看的任务,在新增了GLUE任务后,调度中心操作一栏有对应入口进去编写,需要绑定到某一执行器执行。

执行器

执行器任务写在handler里,因此根据任务不同需要编写不同的handler去编写任务,同时所有handler都需要继承IJobHandler。而且不同执行器的xxl.job.executor.port需要不同

遇到的问题

java.net.BindException: Address already in use: bind

在运行多个执行器的时候会抛出这个异常,需要把xxljobconfig文件中
@Bean(initMethod = “start”, destroyMethod = “destroy”)
修改成@Bean

Bean方法下绑定不到对应handler的任务

需要在执行器的xxljobconfig里,生成XxlJobSpringExecutor过程中使用

xxlJobSpringExecutor.registJobHandler("demoJobHandler", new DemoJobHandler());

注册对应名称的handler,这样调度中心才能绑定到对应名称的handler。

你可能感兴趣的:(xxl-job学习过程)