在学习XXLjob时,建议先看一下文档,不难,通俗易懂,由于本人所从事的项目是java项目,所以对于如何在其他环境下开发使用不了解,但基本操作应该差不多,下面放上学习文档:http://www.xuxueli.com/xxl-job/#/
在看完文档后,可以先把源码下载下来,这里提供百度云的下载链接,或者自行到git上进行拉取也可以:
链接: https://pan.baidu.com/s/1VBIiymbU0hgn9Av0qj_KKA 提取码: cpbc 复制这段内容后打开百度网盘手机App,操作更方便哦
下面的笔记是自己刚接触xxljob所做的记录,刚刚接触,有不足的地方,还望指正
对xxljob中间件的使用,我从bean模式下进行开发,首先需要在common包下的pom文件中添加对于xxl-job-core的依赖,如下图
<dependency>
<groupId>com.xuxueli</groupId>
<artifactId>xxl-job-core</artifactId>
<version>2.0.2</version>
</dependency>
然后编写配置文件,项目中采用了Apollo进行参数配置,所以在Apollo配置完参数后,在项目中直接进行调用即可,Apollo上的参数配置,不再详述,只知道需要配几个参数即可:
xxl.job.admin.addresses = http://localhost:8088/xxl-job-admin/
xxl.job.executor.appname = xxl-job-executor-XXX
xxl.job.executor.port = 9992
xxl.job.executor.logpath = /home/XX/logs/xxl-job/XXX-dev
xxl.job.executor.logretentiondays = -1
xxl.job.executor.ip =
xxl.job.accessToken =
上述参数值根据个人情况进行设置,不过appname要记住
配置好参数后,在原项目中添加handler包,用来管理handler文件,创建一个java文件,名字可命名为XXXHandler,在此文件中,需要有下面内容:
@JobHandler(value="demoJobHandler")
//注解的形式来设置handler的别名,注册到执行器工厂
@Component
public class DemoJobHandler extends IJobHandler {
//*此处要继承 IJobHandler,必须
@Override
public ReturnT<String> execute(String param) throws Exception {
//*只包含此方法来实现具体的操作
XxlJobLogger.log("XXL-JOB, Hello World.");
XxlJobLogger.log("First Step");
for (int i = 0; i < 5; i++) {
XxlJobLogger.log("beat at:" + i);
TimeUnit.SECONDS.sleep(2);
}
return SUCCESS;
}
}
完成handler的开发,要增加spring读取配置,在项目中的spring-common.xml文件中进行设置
<!-- ********************************* 基础配置 ********************************* -->
<!-- 配置01、JobHandler 扫描路径 -->
<context:component-scan base-package="cn.xxljob.handler" />
<!--cn.xxljob.handler是handler文件所在的包 -->
<!-- 配置02、执行器 -->
<bean id="xxlJobSpringExecutor" class="com.xxl.job.core.executor.impl.XxlJobSpringExecutor" 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}" />
<!-- 执行器端口号[选填],小于等于0则自动获取 -->
<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>
appname与之前的一致,注册方式自动注册即可
然后创建任务
新建任务后可以对任务进行启动停止执行等操作
到这一步,相应的开发已完成,可以进行测试执行,首先将任务打开,然后将本地项目跑起来,可供调度,最后在任务中选择执行,参数可选填,执行后,查看日志,如图
调度成功说明已建立关系,可以进行调度,
由于我是对旧项目进行迁移,所以在此遇到一个坑,就是在项目中已经引入了一个有关hessian的包,此处要将该包注释掉,因为有冲突
<dependency>
<groupId>com.caucho</groupId>
<artifactId>hessian</artifactId>
<version>3.1.5</version>
</dependency>
注释后项目就可以运行了
3.0版本使用情况
https://blog.csdn.net/qq_39380192/article/details/122357960?spm=1001.2014.3001.5501