XXL-JOB是一个xxl-job 基于Quartz 的分布式任务调度平台,不过,你别管他是基于啥的,先学会用它。
它主要是两个(当然啦,也不仅限于这两个),一个是调度中心,一个是执行器。实际上呢,XXL-JOB是一个独立可运行且有web页面,可进行简单curd操作的项目。百度一大堆包括官网都是整个xxl-job的从Github下载部署到本地,并跑起来,这并不难(微笑脸),可很少有整合自己项目的案例,也没搜到,当时没有头绪,现在整合完了,不就那么回事儿么。。。。。
第一:明确,是通过调度中心(admin)去调度执行器(xxl-job-executor-samples,这里面有四个例子。),
那就很好办了,执行器里去执行我们的计划任务/线程之类的,对吧,那我们就把执行器整合到我们实际项目,调度中心(admin)模块儿,就作为xxl-job项目单独运行,下面请看,本人被快折磨的简单的几个步骤(同时也感谢老同事炕爷大佬):
第一步:给你的项目添加xxl-job的依赖,确保依赖下载成功
和你下载的xxl-job平台版本一直即可
<dependency>
<groupId>com.xuxueli</groupId>
<artifactId>xxl-job-core</artifactId>
<version>1.9.0</version>
</dependency>
第二步:复制执行器配置xxl-job-executor.properties文件,到整合spring的的resources文件下,看图:
这里面的配置,我就不说了,官网很详细(可能是我这前半生看到的最详细的吧),接下来配置bean,
第三步:
<!--添加扫描properties文件-->
在ApplicationContext.xml中添加一下信息
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath:jdbc.properties</value>
<!-- 添加扫描 properties文件-->
<value>classpath:xxl-job-executor.properties</value>
</list>
</property>
</bean>
执行器组件,配置内容说明:
<!-- 配置01、JobHandler 扫描路径:自动扫描容器中JobHandler,这个包名要和你自己建的包名相同 -->
<context:component-scan base-package="com.xxl.job.executor.service.jobhandler" />
<!-- 配置02、执行器 这个bean里的包名不用管,你引入了xxl-job-core包,在这个包里可以看到这个类-->
<bean id="xxlJobExecutor" class="com.xxl.job.core.executor.XxlJobExecutor" init-method="start" destroy-method="destroy" >
<!-- 执行器注册中心地址[选填],为空则关闭自动注册 -->
<property name="adminAddresses" value="${xxl.job.admin.addresses}" />
<!-- 执行器AppName[选填],为空则关闭自动注册 -->
<property name="appName" value="${xxl.job.executor.appname}" />
<!-- 执行器IP[选填],为空则自动获取 -->
<property name="ip" value="${xxl.job.executor.ip}" />
<!-- 执行器端口号[选填],为空则自动获取 -->
<property name="port" value="${xxl.job.executor.port}" />
<!-- 访问令牌[选填],非空则进行匹配校验 -->
<property name="accessToken" value="${xxl.job.accessToken}" />
<!-- 执行器日志路径[选填],为空则使用默认路径 -->
<property name="logPath" value="${xxl.job.executor.logpath}" />
<!-- 日志保存天数[选填],值大于3时生效 -->
<property name="logRetentionDays" value="${xxl.job.executor.logretentiondays}" />
</bean>
第五步,建立执行器类,继承IJobHandler,并且添加注解@JobHandler(value=”my”),一定要写value,且value值等于页面用BEAN模式运行任务时,JobHandler的名称,看图:
@JobHandler(value="my")
@Component
public class MyJobhandler extends IJobHandler {
@Resource(name = "gzhService")
private GzhService gzhService;
@Override
public ReturnT<String> execute(String param) throws Exception {
System.out.println("测试!!!!!");
return SUCCESS;
}
基测试本上算是整合完了,接下来就是测试了,很简单,第一步,新建执行器,
第二步,新建任务绑定执行器,
第三步运行,点击上图后方的执行,即可,看图xxl-job页面效果和实际后台输出:
最后这张图,上面的信息,是我把计划任务放在这里面了,线程执行的输出信息,
只要能成功输出测试,灵活百变,哪个任务都呢个通过xxl-job来启动!!!