Skip to content
项目
群组
代码片段
帮助
正在加载...
登录
切换导航
X
XXL-JOB
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分枝图
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
分枝图
统计图
创建新议题
作业
提交
议题看板
打开侧边栏
靳帅
XXL-JOB
Commits
0045d1e3
提交
0045d1e3
authored
8月 11, 2017
作者:
xuxueli
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
新增JFinal类型执行器sample示例项目;
上级
85179937
隐藏空白字符变更
内嵌
并排
正在显示
10 个修改的文件
包含
278 行增加
和
8 行删除
+278
-8
XXL-JOB官方文档.md
doc/XXL-JOB官方文档.md
+12
-8
pom.xml
xxl-job-executor-samples/pom.xml
+2
-0
pom.xml
...b-executor-samples/xxl-job-executor-sample-jfinal/pom.xml
+37
-0
JFinalCoreConfig.java
...xueli/executor/sample/jfinal/config/JFinalCoreConfig.java
+84
-0
IndexController.java
...li/executor/sample/jfinal/controller/IndexController.java
+10
-0
DemoJobHandler.java
...eli/executor/sample/jfinal/jobhandler/DemoJobHandler.java
+33
-0
ShardingJobHandler.java
...executor/sample/jfinal/jobhandler/ShardingJobHandler.java
+35
-0
log4j.xml
...l-job-executor-sample-jfinal/src/main/resources/log4j.xml
+28
-0
xxl-job-executor.properties
...ple-jfinal/src/main/resources/xxl-job-executor.properties
+14
-0
web.xml
...ob-executor-sample-jfinal/src/main/webapp/WEB-INF/web.xml
+23
-0
没有找到文件。
doc/XXL-JOB官方文档.md
浏览文件 @
0045d1e3
...
@@ -155,9 +155,11 @@ XXL-JOB是一个轻量级分布式任务调度框架,其核心设计目标是
...
@@ -155,9 +155,11 @@ XXL-JOB是一个轻量级分布式任务调度框架,其核心设计目标是
xxl-job-admin:调度中心
xxl-job-admin:调度中心
xxl-job-core:公共依赖
xxl-job-core:公共依赖
xxl-job-executor:执行器Example项目
xxl-job-executor:执行器Sample项目,可参考并快速搭建执行器项目
:xxl-job-executor-sample-spring:执行器Example,Spring版本(可直接使用执行器Example,也可以将现有项目改造成执行器使用)
:xxl-job-executor-sample-spring:执行器Sample示例,Spring版本(可直接使用执行器Sample,也可以将现有项目改造成执行器使用)
:xxl-job-executor-sample-springboot:执行器Example,Springboot版本
:xxl-job-executor-sample-springboot:执行器Sample示例,Springboot版本
:xxl-job-executor-sample-jfinal:执行器Sample示例,JFinal版本
### 2.3 配置部署“调度中心”
### 2.3 配置部署“调度中心”
...
@@ -210,7 +212,7 @@ XXL-JOB是一个轻量级分布式任务调度框架,其核心设计目标是
...
@@ -210,7 +212,7 @@ XXL-JOB是一个轻量级分布式任务调度框架,其核心设计目标是
### 2.4 配置部署“执行器项目”
### 2.4 配置部署“执行器项目”
“执行器”项目:xxl-job-executor-sample-spring (如新建执行器项目,可参考该
Example
执行器项目的配置步骤;)
“执行器”项目:xxl-job-executor-sample-spring (如新建执行器项目,可参考该
Sample示例
执行器项目的配置步骤;)
作用:负责接收“调度中心”的调度并执行;
作用:负责接收“调度中心”的调度并执行;
#### 步骤一:maven依赖
#### 步骤一:maven依赖
...
@@ -247,10 +249,11 @@ XXL-JOB是一个轻量级分布式任务调度框架,其核心设计目标是
...
@@ -247,10 +249,11 @@ XXL-JOB是一个轻量级分布式任务调度框架,其核心设计目标是
2、执行器Excutor配置:执行器核心配置;
2、执行器Excutor配置:执行器核心配置;
#### 步骤四:部署执行器项目:
#### 步骤四:部署执行器项目:
如果已经正确进行上述配置,可将执行器项目编译打部署,系统提供
两个执行器example
项目,选择其中一个即可,各自的部署方式如下。
如果已经正确进行上述配置,可将执行器项目编译打部署,系统提供
三个执行器Sample示例
项目,选择其中一个即可,各自的部署方式如下。
xxl-job-executor-sample-spring:项目编译打包成WAR包,并部署到tomcat中。
xxl-job-executor-sample-spring:项目编译打包成WAR包,并部署到tomcat中。
xxl-job-executor-sample-springboot:项目编译打包成springboot类型的可执行JAR包,命令启动即可;
xxl-job-executor-sample-springboot:项目编译打包成springboot类型的可执行JAR包,命令启动即可;
xxl-job-executor-sample-jfinal:项目编译打包成WAR包
至此“执行器”项目已经部署结束。
至此“执行器”项目已经部署结束。
...
@@ -338,7 +341,7 @@ XXL-JOB是一个轻量级分布式任务调度框架,其核心设计目标是
...
@@ -338,7 +341,7 @@ XXL-JOB是一个轻量级分布式任务调度框架,其核心设计目标是
-
1、 新建一个继承com.xxl.job.core.handler.IJobHandler的Java类;
-
1、 新建一个继承com.xxl.job.core.handler.IJobHandler的Java类;
-
2、 该类被Spring容器扫描为Bean实例,如加“@Component”注解;
-
2、 该类被Spring容器扫描为Bean实例,如加“@Component”注解;
-
3、 添加 “@JobHander(value="自定义jobhandler名称")”注解,注解的value值为自定义的JobHandler名称,该名称对应的是调度中心新建任务的JobHandler属性的值。
-
3、 添加 “@JobHander(value="自定义jobhandler名称")”注解,注解的value值为自定义的JobHandler名称,该名称对应的是调度中心新建任务的JobHandler属性的值。
(可参考
Example
执行器中的DemoJobHandler,见下图)
(可参考
Sample示例
执行器中的DemoJobHandler,见下图)


...
@@ -496,7 +499,7 @@ try{
...
@@ -496,7 +499,7 @@ try{
-
/db :“调度数据库”建表脚本
-
/db :“调度数据库”建表脚本
-
/xxl-job-admin :调度中心,项目源码
-
/xxl-job-admin :调度中心,项目源码
-
/xxl-job-core :公共Jar依赖
-
/xxl-job-core :公共Jar依赖
-
/xxl-job-executor-samples :执行器,
Example
项目(大家可以在该项目上进行开发,也可以将现有项目改造生成执行器项目)
-
/xxl-job-executor-samples :执行器,
Sample示例
项目(大家可以在该项目上进行开发,也可以将现有项目改造生成执行器项目)
#### 5.2 “调度数据库”配置
#### 5.2 “调度数据库”配置
XXL-JOB调度模块基于Quartz集群实现,其“调度数据库”是在Quartz的11张集群mysql表基础上扩展而成。
XXL-JOB调度模块基于Quartz集群实现,其“调度数据库”是在Quartz的11张集群mysql表基础上扩展而成。
...
@@ -719,7 +722,7 @@ XXL-JOB会为每次调度请求生成一个单独的日志文件,需要通过
...
@@ -719,7 +722,7 @@ XXL-JOB会为每次调度请求生成一个单独的日志文件,需要通过
"分片广播" 以执行器为维度进行分片,支持动态扩容执行器集群从而动态增加分片数量,协同进行业务处理;在进行大数据量业务操作时可显著提升任务处理能力和速度。
"分片广播" 以执行器为维度进行分片,支持动态扩容执行器集群从而动态增加分片数量,协同进行业务处理;在进行大数据量业务操作时可显著提升任务处理能力和速度。
"分片广播" 和普通任务开发流程一致,不同之处在于可以可以获取分片参数,获取分片参数对象的代码如下(可参考
example
执行器中的示例任务"ShardingJobHandler" ):
"分片广播" 和普通任务开发流程一致,不同之处在于可以可以获取分片参数,获取分片参数对象的代码如下(可参考
Sample示例
执行器中的示例任务"ShardingJobHandler" ):
ShardingUtil.ShardingVO shardingVO = ShardingUtil.getShardingVo();
ShardingUtil.ShardingVO shardingVO = ShardingUtil.getShardingVo();
...
@@ -948,6 +951,7 @@ Tips: 历史版本(V1.3.x)目前已经Release至稳定版本, 进入维护阶段
...
@@ -948,6 +951,7 @@ Tips: 历史版本(V1.3.x)目前已经Release至稳定版本, 进入维护阶段
#### 6.18 版本 V1.8.2 特性[Coding]
#### 6.18 版本 V1.8.2 特性[Coding]
-
1、解决执行器回调URL不支持配置HTTPS时问题;
-
1、解决执行器回调URL不支持配置HTTPS时问题;
-
2、规范项目目录,方便扩展多执行器;
-
2、规范项目目录,方便扩展多执行器;
-
3、新增JFinal类型执行器sample示例项目;
#### TODO LIST
#### TODO LIST
-
1、任务权限管理:执行器为粒度分配权限,核心操作校验权限;
-
1、任务权限管理:执行器为粒度分配权限,核心操作校验权限;
...
...
xxl-job-executor-samples/pom.xml
浏览文件 @
0045d1e3
...
@@ -13,6 +13,7 @@
...
@@ -13,6 +13,7 @@
<modules>
<modules>
<module>
xxl-job-executor-sample-spring
</module>
<module>
xxl-job-executor-sample-spring
</module>
<module>
xxl-job-executor-sample-springboot
</module>
<module>
xxl-job-executor-sample-springboot
</module>
<module>
xxl-job-executor-sample-jfinal
</module>
</modules>
</modules>
</project>
</project>
\ No newline at end of file
xxl-job-executor-samples/xxl-job-executor-sample-jfinal/pom.xml
0 → 100644
浏览文件 @
0045d1e3
<?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"
>
<parent>
<artifactId>
xxl-job-executor-samples
</artifactId>
<groupId>
com.xuxueli
</groupId>
<version>
1.8.2-SNAPSHOT
</version>
</parent>
<modelVersion>
4.0.0
</modelVersion>
<artifactId>
xxl-job-executor-sample-jfinal
</artifactId>
<packaging>
war
</packaging>
<dependencies>
<!-- jfinal -->
<dependency>
<groupId>
com.jfinal
</groupId>
<artifactId>
jfinal
</artifactId>
<version>
2.0
</version>
</dependency>
<!-- xxl-job -->
<dependency>
<groupId>
com.xuxueli
</groupId>
<artifactId>
xxl-job-core
</artifactId>
<version>
${project.parent.version}
</version>
</dependency>
<dependency>
<groupId>
org.slf4j
</groupId>
<artifactId>
slf4j-log4j12
</artifactId>
<version>
${slf4j-api.version}
</version>
</dependency>
</dependencies>
</project>
\ No newline at end of file
xxl-job-executor-samples/xxl-job-executor-sample-jfinal/src/main/java/com/xuxueli/executor/sample/jfinal/config/JFinalCoreConfig.java
0 → 100644
浏览文件 @
0045d1e3
package
com
.
xuxueli
.
executor
.
sample
.
jfinal
.
config
;
import
com.jfinal.config.*
;
import
com.jfinal.kit.Prop
;
import
com.jfinal.kit.PropKit
;
import
com.xuxueli.executor.sample.jfinal.controller.IndexController
;
import
com.xuxueli.executor.sample.jfinal.jobhandler.DemoJobHandler
;
import
com.xuxueli.executor.sample.jfinal.jobhandler.ShardingJobHandler
;
import
com.xxl.job.core.executor.XxlJobExecutor
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
/**
* @author xuxueli 2017-08-11 14:17:41
*/
public
class
JFinalCoreConfig
extends
JFinalConfig
{
private
Logger
logger
=
LoggerFactory
.
getLogger
(
JFinalCoreConfig
.
class
);
// ---------------------- xxl-job executor ----------------------
XxlJobExecutor
xxlJobExecutor
=
null
;
private
void
initXxlJobExecutor
()
{
// registry jobhandler
XxlJobExecutor
.
registJobHandler
(
"demoJobHandler"
,
new
DemoJobHandler
());
XxlJobExecutor
.
registJobHandler
(
"shardingJobHandler"
,
new
ShardingJobHandler
());
// load executor prop
Prop
xxlJobProp
=
PropKit
.
use
(
"xxl-job-executor.properties"
);
// init executor
xxlJobExecutor
=
new
XxlJobExecutor
();
xxlJobExecutor
.
setIp
(
xxlJobProp
.
get
(
"xxl.job.executor.ip"
));
xxlJobExecutor
.
setPort
(
xxlJobProp
.
getInt
(
"xxl.job.executor.port"
));
xxlJobExecutor
.
setAppName
(
xxlJobProp
.
get
(
"xxl.job.executor.appname"
));
xxlJobExecutor
.
setAdminAddresses
(
xxlJobProp
.
get
(
"xxl.job.admin.addresses"
));
xxlJobExecutor
.
setLogPath
(
xxlJobProp
.
get
(
"xxl.job.executor.logpath"
));
xxlJobExecutor
.
setAccessToken
(
xxlJobProp
.
get
(
"xxl.job.accessToken"
));
// start executor
try
{
xxlJobExecutor
.
start
();
}
catch
(
Exception
e
)
{
logger
.
error
(
e
.
getMessage
(),
e
);
}
}
private
void
destoryXxlJobExecutor
()
{
if
(
xxlJobExecutor
!=
null
)
{
xxlJobExecutor
.
destroy
();
}
}
// ---------------------- jfinal ----------------------
public
void
configRoute
(
Routes
route
)
{
route
.
add
(
"/"
,
IndexController
.
class
);
}
@Override
public
void
afterJFinalStart
()
{
initXxlJobExecutor
();
}
@Override
public
void
beforeJFinalStop
()
{
destoryXxlJobExecutor
();
}
public
void
configConstant
(
Constants
constants
)
{
}
public
void
configPlugin
(
Plugins
plugins
)
{
}
public
void
configInterceptor
(
Interceptors
interceptors
)
{
}
public
void
configHandler
(
Handlers
handlers
)
{
}
}
xxl-job-executor-samples/xxl-job-executor-sample-jfinal/src/main/java/com/xuxueli/executor/sample/jfinal/controller/IndexController.java
0 → 100644
浏览文件 @
0045d1e3
package
com
.
xuxueli
.
executor
.
sample
.
jfinal
.
controller
;
import
com.jfinal.core.Controller
;
public
class
IndexController
extends
Controller
{
public
void
index
(){
renderText
(
"xxl job executor running."
);
}
}
xxl-job-executor-samples/xxl-job-executor-sample-jfinal/src/main/java/com/xuxueli/executor/sample/jfinal/jobhandler/DemoJobHandler.java
0 → 100644
浏览文件 @
0045d1e3
package
com
.
xuxueli
.
executor
.
sample
.
jfinal
.
jobhandler
;
import
com.xxl.job.core.biz.model.ReturnT
;
import
com.xxl.job.core.handler.IJobHandler
;
import
com.xxl.job.core.log.XxlJobLogger
;
import
java.util.concurrent.TimeUnit
;
/**
* 任务Handler的一个Demo(Bean模式)
*
* 开发步骤:
* 1、继承 “IJobHandler” ;
* 2、执行日志:需要通过 "XxlJobLogger.log" 打印执行日志;
* 3、在 "JFinalCoreConfig" 中注册,执行Jobhandler名称;
*
* @author xuxueli 2015-12-19 19:43:36
*/
public
class
DemoJobHandler
extends
IJobHandler
{
@Override
public
ReturnT
<
String
>
execute
(
String
...
params
)
throws
Exception
{
XxlJobLogger
.
log
(
"XXL-JOB, Hello World."
);
for
(
int
i
=
0
;
i
<
5
;
i
++)
{
XxlJobLogger
.
log
(
"beat at:"
+
i
);
TimeUnit
.
SECONDS
.
sleep
(
2
);
}
return
ReturnT
.
SUCCESS
;
}
}
xxl-job-executor-samples/xxl-job-executor-sample-jfinal/src/main/java/com/xuxueli/executor/sample/jfinal/jobhandler/ShardingJobHandler.java
0 → 100644
浏览文件 @
0045d1e3
package
com
.
xuxueli
.
executor
.
sample
.
jfinal
.
jobhandler
;
import
com.xxl.job.core.biz.model.ReturnT
;
import
com.xxl.job.core.handler.IJobHandler
;
import
com.xxl.job.core.log.XxlJobLogger
;
import
com.xxl.job.core.util.ShardingUtil
;
/**
* 分片广播任务
*
* @author xuxueli 2017-07-25 20:56:50
*/
public
class
ShardingJobHandler
extends
IJobHandler
{
@Override
public
ReturnT
<
String
>
execute
(
String
...
params
)
throws
Exception
{
// 分片参数
ShardingUtil
.
ShardingVO
shardingVO
=
ShardingUtil
.
getShardingVo
();
XxlJobLogger
.
log
(
"分片参数:当前分片序号 = {0}, 总分片数 = {1}"
,
shardingVO
.
getIndex
(),
shardingVO
.
getTotal
());
// 业务逻辑
for
(
int
i
=
0
;
i
<
shardingVO
.
getTotal
();
i
++)
{
if
(
i
==
shardingVO
.
getIndex
())
{
XxlJobLogger
.
log
(
"第 {0} 片, 命中分片开始处理"
,
i
);
}
else
{
XxlJobLogger
.
log
(
"第 {0} 片, 忽略"
,
i
);
}
}
return
ReturnT
.
SUCCESS
;
}
}
xxl-job-executor-samples/xxl-job-executor-sample-jfinal/src/main/resources/log4j.xml
0 → 100644
浏览文件 @
0045d1e3
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration PUBLIC "-//log4j/log4j Configuration//EN" "log4j.dtd">
<log4j:configuration
xmlns:log4j=
"http://jakarta.apache.org/log4j/"
threshold=
"null"
debug=
"null"
>
<appender
name=
"CONSOLE"
class=
"org.apache.log4j.ConsoleAppender"
>
<param
name=
"Target"
value=
"System.out"
/>
<layout
class=
"org.apache.log4j.PatternLayout"
>
<param
name=
"ConversionPattern"
value=
"%-d{yyyy-MM-dd HH:mm:ss} xxl-job-executor-sample-jfinal [%c]-[%t]-[%M]-[%L]-[%p] %m%n"
/>
</layout>
</appender>
<appender
name=
"FILE"
class=
"org.apache.log4j.DailyRollingFileAppender"
>
<param
name=
"file"
value=
"/data/applogs/xxl-job/xxl-job-executor-sample-jfinal.log"
/>
<param
name=
"append"
value=
"true"
/>
<param
name=
"encoding"
value=
"UTF-8"
/>
<layout
class=
"org.apache.log4j.PatternLayout"
>
<param
name=
"ConversionPattern"
value=
"%-d{yyyy-MM-dd HH:mm:ss} xxl-job-executor-sample-jfinal [%c]-[%t]-[%M]-[%L]-[%p] %m%n"
/>
</layout>
</appender>
<root>
<level
value=
"INFO"
/>
<appender-ref
ref=
"CONSOLE"
/>
<appender-ref
ref=
"FILE"
/>
</root>
</log4j:configuration>
\ No newline at end of file
xxl-job-executor-samples/xxl-job-executor-sample-jfinal/src/main/resources/xxl-job-executor.properties
0 → 100644
浏览文件 @
0045d1e3
### 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 executor address
xxl.job.executor.appname
=
xxl-job-executor-sample
xxl.job.executor.ip
=
xxl.job.executor.port
=
9997
### xxl-job log path
xxl.job.executor.logpath
=
/data/applogs/xxl-job/jobhandler/
### xxl-job, access token
xxl.job.accessToken
=
\ No newline at end of file
xxl-job-executor-samples/xxl-job-executor-sample-jfinal/src/main/webapp/WEB-INF/web.xml
0 → 100644
浏览文件 @
0045d1e3
<?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/web-app_2_5.xsd"
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>
jfinal-demo
</display-name>
<!-- jfinal -->
<filter>
<filter-name>
jfinal
</filter-name>
<filter-class>
com.jfinal.core.JFinalFilter
</filter-class>
<init-param>
<param-name>
configClass
</param-name>
<param-value>
com.xuxueli.executor.sample.jfinal.config.JFinalCoreConfig
</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>
jfinal
</filter-name>
<url-pattern>
/*
</url-pattern>
</filter-mapping>
</web-app>
\ No newline at end of file
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论