XXL-JOB 任务调度平台实践
- 一、调度中心(服务端)
- 1、从gitbub 获取项目源码:[https://github.com/xuxueli/xxl-job](https://github.com/xuxueli/xxl-job)
- 2、从源码中得到SQL脚本创建和初始化数据库
- 3、Maven 编译打包 xxl-job-admin 并部署为调度中心
- 4、启动运行 xxl-job-admin,并访问 http://localhost:8080/xxl-job-admin
- 二、开发XXL-JOB执行器(客户端)
- 1、创建一个新项目(New Module)
- 2、配置任务调度中心
- ①新增执行器:
- ②新增任务管理:
- ③查看调度日记
连接视频
一、调度中心(服务端)
1、从gitbub 获取项目源码:https://github.com/xuxueli/xxl-job
修改 xxl-job项目的配置文件【application.properties】,修改数据库连接为自己的数据库,修改发送邮件配置
### xxl-job, access token #设置访问xxl-job的token设值
xxl.job.accessToken=123456
2、从源码中得到SQL脚本创建和初始化数据库
sql文件位置:
3、Maven 编译打包 xxl-job-admin 并部署为调度中心
4、启动运行 xxl-job-admin,并访问 http://localhost:8080/xxl-job-admin
默认用户名:admin 密码:123456
二、开发XXL-JOB执行器(客户端)
1、创建一个新项目(New Module)
客户端(spring-xxl-job)
pom.xml
文件
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.zzp</groupId>
<artifactId>spring-xxl-job</artifactId>
<version>1.0.0</version>
<packaging>war</packaging>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
</properties>
<dependencies>
<!-- xxl-job-core -->
<dependency>
<groupId>com.xuxueli</groupId>
<artifactId>xxl-job-core</artifactId>
<version>2.2.0</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.2.6.RELEASE</version>
</dependency>
</dependencies>
</project>
拷贝xxl-job-executor.properties配置文件在在resources目录下【参考xxl-job-executor-samples目录下的xxl-job-executor-sample-spring项目的xxl-job-executor.properties配置文件】
xxl-job-executor.properties
文件
### xxl-job admin address list, such as "http://address" or "http://address01,http://address02"
# 连接哪个服务中心
xxl.job.admin.addresses=http://127.0.0.1:8080/xxl-job-admin
### xxl-job, access token
# 和服务端设置的配置accessToken保持一致
xxl.job.accessToken=123456
### xxl-job executor appname
# 执行器的名字
xxl.job.executor.appname=spring-xxl-job
### xxl-job executor registry-address: default use address to registry , otherwise use ip:port if address is null
# 执行器的地址
xxl.job.executor.address=
### xxl-job executor server-info
# 执行器的ip(客户端的ip)
xxl.job.executor.ip=127.0.0.1
# 执行器的端口(客户端的端口)
xxl.job.executor.port=9999
### xxl-job executor log-path
# 日记存储地址
xxl.job.executor.logpath=F:/xxl-job/log
### xxl-job executor log-retention-days
# 日记存储有效天数
xxl.job.executor.logretentiondays=30
在resources目录下添加applicationContext.xml配置文件【参考xxl-job-executor-samples目录下的xxl-job-executor-sample-spring项目的applicationcontext-xxl-job.xml配置文件】
applicationContext.xml
文件
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">
<bean id="propertyConfigurer" class="org.springframework.context.support.PropertySourcesPlaceholderConfigurer">
<property name="fileEncoding" value="utf-8" />
<property name="locations">
<list>
<value>classpath*:xxl-job-executor.properties</value>
</list>
</property>
</bean>
<!-- ********************************* 基础配置 ********************************* -->
<!-- 配置01、JobHandler 扫描路径 在本地项目中创建包 -->
<context:component-scan base-package="com.zzp.executor" />
<!-- 配置02、执行器 依赖包 读取xxl-job-executor.properties文件中的配置 -->
<bean id="xxlJobSpringExecutor" class="com.xxl.job.core.executor.impl.XxlJobSpringExecutor" >
<!-- 执行器注册中心地址[选填],为空则关闭自动注册 -->
<property name="adminAddresses" value="${xxl.job.admin.addresses}" />
<!-- 访问令牌[选填],非空则进行匹配校验 -->
<property name="accessToken" value="${xxl.job.accessToken}" />
<!-- 执行器AppName[选填],为空则关闭自动注册 -->
<property name="appname" value="${xxl.job.executor.appname}" />
<!-- 注册地址[选填],优先使用该配置作为注册地址,为空时使用内嵌服务 ”IP:PORT“ 作为注册地址 -->
<property name="address" value="${xxl.job.executor.address}" />
<!-- 执行器IP[选填],为空则自动获取 -->
<property name="ip" value="${xxl.job.executor.ip}" />
<!-- 执行器端口号[选填],小于等于0则自动获取 -->
<property name="port" value="${xxl.job.executor.port}" />
<!-- 执行器日志路径[选填],为空则使用默认路径 -->
<property name="logPath" value="${xxl.job.executor.logpath}" />
<!-- 日志保存天数[选填],值大于3时生效 -->
<property name="logRetentionDays" value="${xxl.job.executor.logretentiondays}" />
</bean>
</beans>
创建MyJobHandler类【参考xxl-job-executor-samples目录下的xxl-job-executor-sample-spring项目的SampleXxlJob.java类】
MyJobHandler.java
类
package com.zzp.executor;
import com.xxl.job.core.biz.model.ReturnT;
import com.xxl.job.core.handler.annotation.XxlJob;
import com.xxl.job.core.log.XxlJobLogger;
import org.springframework.stereotype.Component;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* 此类就是真正的定时任务业务处理类(Bean模式)
*
* 也就是真正的定时任务功能逻辑在此类中完成(比如:定时对账,定时发送短信,定时清理)
*
* 开发步骤:
* 1、在Spring Bean实例中,开发Job方法,方式格式要求为 "public ReturnT<String> execute(String param)"
* 2、为Job方法添加注解 "@XxlJob(value="自定义jobhandler名称", init = "JobHandler初始化方法", destroy = "JobHandler销毁方法")",注解value值对应的是调度中心新建任务的JobHandler属性的值。
* 3、执行日志:需要通过 "XxlJobLogger.log" 打印执行日志;
*
*/
@Component
public class MyJobHandler {
private SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
/**
* 1、简单任务示例(Bean模式)
*/
@XxlJob(value = "myJobHandler")
public ReturnT<String> myJobHandler(String param) throws Exception {
//在改方法里面编写真正的定时任务功能逻辑 比如:定时对账,定时发送短信,定时清理
XxlJobLogger.log("XXL-JOB, myJobHandler start:" + sdf.format(new Date()));
XxlJobLogger.log("XXL-JOB, myJobHandler param:" + param);
return ReturnT.SUCCESS;
}
}
因为spring-xxl-job是web项目,需要web【拷贝xxl-job-executor-samples目录下的xxl-job-executor-sample-spring项目的web文件夹】
修改web.xml
配置文件
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
id="WebApp_ID" version="2.5">
<display-name>spring-xxl-job</display-name>
<context-param>
<param-name>webAppRootKey</param-name>
<param-value>spring-xxl-job</param-value>
</context-param>
<!-- spring -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:applicationContext.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
</web-app>
打包:
使用Tomcat启动spring-xxl-job项目
浏览器访问:
2、配置任务调度中心
①新增执行器:
②新增任务管理:
启动任务
③查看调度日记
这里失败,因为在执行器设值错误了
执行成功日记:
文件日记输出: