Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenDocCN
xxl-job
提交
85179937
X
xxl-job
项目概览
OpenDocCN
/
xxl-job
通知
9
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
X
xxl-job
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
85179937
编写于
8月 11, 2017
作者:
许雪里
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
规范项目目录,方便扩展多执行器;
上级
0cb742d6
变更
28
隐藏空白更改
内联
并排
Showing
28 changed file
with
416 addition
and
392 deletion
+416
-392
NOTICE
NOTICE
+1
-1
README.md
README.md
+1
-1
doc/XXL-JOB-English-Documentation.md
doc/XXL-JOB-English-Documentation.md
+0
-0
doc/XXL-JOB官方文档.md
doc/XXL-JOB官方文档.md
+21
-16
doc/db/tables_mysql(备份,请忽略).sql
doc/db/tables_mysql(备份,请忽略).sql
+0
-0
doc/db/tables_xxl_job.sql
doc/db/tables_xxl_job.sql
+220
-220
pom.xml
pom.xml
+1
-2
xxl-job-core/src/main/java/com/xxl/job/core/executor/XxlJobExecutor.java
...c/main/java/com/xxl/job/core/executor/XxlJobExecutor.java
+3
-1
xxl-job-core/src/main/java/com/xxl/job/core/log/XxlJobFileAppender.java
...rc/main/java/com/xxl/job/core/log/XxlJobFileAppender.java
+1
-1
xxl-job-executor-samples/pom.xml
xxl-job-executor-samples/pom.xml
+18
-0
xxl-job-executor-samples/xxl-job-executor-sample-spring/pom.xml
...b-executor-samples/xxl-job-executor-sample-spring/pom.xml
+38
-38
xxl-job-executor-samples/xxl-job-executor-sample-spring/src/main/java/com/xxl/job/executor/service/jobhandler/DemoJobHandler.java
...m/xxl/job/executor/service/jobhandler/DemoJobHandler.java
+38
-38
xxl-job-executor-samples/xxl-job-executor-sample-spring/src/main/java/com/xxl/job/executor/service/jobhandler/ShardingJobHandler.java
...l/job/executor/service/jobhandler/ShardingJobHandler.java
+0
-0
xxl-job-executor-samples/xxl-job-executor-sample-spring/src/main/resources/applicationcontext-xxl-job.xml
...-spring/src/main/resources/applicationcontext-xxl-job.xml
+40
-40
xxl-job-executor-samples/xxl-job-executor-sample-spring/src/main/resources/log4j.xml
...l-job-executor-sample-spring/src/main/resources/log4j.xml
+3
-3
xxl-job-executor-samples/xxl-job-executor-sample-spring/src/main/resources/xxl-job-executor.properties
...ple-spring/src/main/resources/xxl-job-executor.properties
+1
-1
xxl-job-executor-samples/xxl-job-executor-sample-spring/src/main/webapp/WEB-INF/web.xml
...ob-executor-sample-spring/src/main/webapp/WEB-INF/web.xml
+26
-26
xxl-job-executor-samples/xxl-job-executor-sample-spring/src/main/webapp/index.html
...xxl-job-executor-sample-spring/src/main/webapp/index.html
+0
-0
xxl-job-executor-samples/xxl-job-executor-sample-spring/src/test/java/com/xxl/executor/test/DemoJobHandlerTest.java
...c/test/java/com/xxl/executor/test/DemoJobHandlerTest.java
+0
-0
xxl-job-executor-samples/xxl-job-executor-sample-springboot/pom.xml
...ecutor-samples/xxl-job-executor-sample-springboot/pom.xml
+2
-2
xxl-job-executor-samples/xxl-job-executor-sample-springboot/src/main/java/com/xxl/job/executor/Application.java
...gboot/src/main/java/com/xxl/job/executor/Application.java
+0
-0
xxl-job-executor-samples/xxl-job-executor-sample-springboot/src/main/java/com/xxl/job/executor/core/config/XxlJobConfig.java
...n/java/com/xxl/job/executor/core/config/XxlJobConfig.java
+0
-0
xxl-job-executor-samples/xxl-job-executor-sample-springboot/src/main/java/com/xxl/job/executor/mvc/controller/IndexController.java
.../com/xxl/job/executor/mvc/controller/IndexController.java
+0
-0
xxl-job-executor-samples/xxl-job-executor-sample-springboot/src/main/java/com/xxl/job/executor/service/jobhandler/DemoJobHandler.java
...m/xxl/job/executor/service/jobhandler/DemoJobHandler.java
+0
-0
xxl-job-executor-samples/xxl-job-executor-sample-springboot/src/main/java/com/xxl/job/executor/service/jobhandler/ShardingJobHandler.java
...l/job/executor/service/jobhandler/ShardingJobHandler.java
+0
-0
xxl-job-executor-samples/xxl-job-executor-sample-springboot/src/main/resources/application.properties
...mple-springboot/src/main/resources/application.properties
+1
-1
xxl-job-executor-samples/xxl-job-executor-sample-springboot/src/main/resources/logback.xml
...executor-sample-springboot/src/main/resources/logback.xml
+1
-1
xxl-job-executor-samples/xxl-job-executor-sample-springboot/src/test/java/com/xxl/job/executor/test/XxlJobExecutorExampleBootApplicationTests.java
...cutor/test/XxlJobExecutorExampleBootApplicationTests.java
+0
-0
未找到文件。
NOTICE
浏览文件 @
85179937
Copyright
2015-2017/NOW
xuxueli.
Copyright
(c) 2015-present,
xuxueli.
Dependencies:
================================================================
...
...
README.md
浏览文件 @
85179937
...
...
@@ -38,7 +38,7 @@ XXL-JOB是一个轻量级分布式任务调度框架,其核心设计目标是
## Documentation
-
[
中文文档
](
https://github.com/xuxueli/xxl-job/blob/master/doc/XXL-JOB官方文档.md
)
-
[
Englis
Documentation
](
https://github.com/xuxueli/xxl-job/blob/master/doc/XXL-JOB-Englis
-Documentation.md
)
-
[
Englis
h Documentation
](
https://github.com/xuxueli/xxl-job/blob/master/doc/XXL-JOB-English
-Documentation.md
)
## Features
...
...
doc/XXL-JOB-Englis-Documentation.md
→
doc/XXL-JOB-Englis
h
-Documentation.md
浏览文件 @
85179937
文件已移动
doc/XXL-JOB官方文档.md
浏览文件 @
85179937
...
...
@@ -122,11 +122,11 @@ XXL-JOB是一个轻量级分布式任务调度框架,其核心设计目标是
#### 技术交流
-
腾讯QQ群(6):399758605
-
腾讯QQ群(5):138274130
(群即将满,请加群6)
-
腾讯QQ群(4):464762661
(群即将满,请加群6)
-
腾讯QQ群(3):242151780
(群即将满,请加群6)
-
腾讯QQ群(2):438249535
(群即将满,请加群6)
-
腾讯QQ群(1):367260654
(群即将满,请加群6)
-
腾讯QQ群(5):138274130
-
腾讯QQ群(4):464762661
-
腾讯QQ群(3):242151780
-
腾讯QQ群(2):438249535
-
腾讯QQ群(1):367260654
### 1.5 环境
-
JDK:1.7+
...
...
@@ -144,7 +144,7 @@ XXL-JOB是一个轻量级分布式任务调度框架,其核心设计目标是
"调度数据库初始化SQL脚本" 位置为:
/xxl-job/db/tables_xxl_job.sql
/xxl-job/d
oc/d
b/tables_xxl_job.sql
调度中心支持集群部署,集群情况下各节点务必连接同一个mysql实例;
...
...
@@ -155,8 +155,9 @@ XXL-JOB是一个轻量级分布式任务调度框架,其核心设计目标是
xxl-job-admin:调度中心
xxl-job-core:公共依赖
xxl-job-executor-example:执行器Example(可直接使用执行器Example,也可以将现有项目改造成执行器使用)
xxl-job-executor-springboot-example:执行器Example,springboot版本
xxl-job-executor:执行器Example项目
:xxl-job-executor-sample-spring:执行器Example,Spring版本(可直接使用执行器Example,也可以将现有项目改造成执行器使用)
:xxl-job-executor-sample-springboot:执行器Example,Springboot版本
### 2.3 配置部署“调度中心”
...
...
@@ -209,7 +210,7 @@ XXL-JOB是一个轻量级分布式任务调度框架,其核心设计目标是
### 2.4 配置部署“执行器项目”
“执行器”项目:xxl-job-executor-
example
(如新建执行器项目,可参考该Example执行器项目的配置步骤;)
“执行器”项目:xxl-job-executor-
sample-spring
(如新建执行器项目,可参考该Example执行器项目的配置步骤;)
作用:负责接收“调度中心”的调度并执行;
#### 步骤一:maven依赖
...
...
@@ -218,7 +219,7 @@ XXL-JOB是一个轻量级分布式任务调度框架,其核心设计目标是
#### 步骤二:执行器配置
执行器配置配置文件地址:
/xxl-job/xxl-job-executor-
example
/src/main/resources/xxl-job-executor.properties
/xxl-job/xxl-job-executor-
samples/xxl-job-executor-sample-spring
/src/main/resources/xxl-job-executor.properties
执行器配置配置内容说明:
...
...
@@ -226,7 +227,7 @@ XXL-JOB是一个轻量级分布式任务调度框架,其核心设计目标是
xxl.job.admin.addresses=http://127.0.0.1:8080/xxl-job-admin
### xxl-job executor address:执行器"AppName"和地址信息配置:AppName执行器心跳注册分组依据;地址信息用于"调度中心请求并触发任务"和"执行器注册"。执行器默认端口为9999,执行器IP默认为空表示自动获取IP,多网卡时可手动设置指定IP。单机部署多个执行器时,注意要配置不同执行器端口;
xxl.job.executor.appname=xxl-job-executor-
ex
ample
xxl.job.executor.appname=xxl-job-executor-
s
ample
xxl.job.executor.ip=
xxl.job.executor.port=9999
...
...
@@ -248,8 +249,8 @@ XXL-JOB是一个轻量级分布式任务调度框架,其核心设计目标是
#### 步骤四:部署执行器项目:
如果已经正确进行上述配置,可将执行器项目编译打部署,系统提供两个执行器example项目,选择其中一个即可,各自的部署方式如下。
xxl-job-executor-
example
:项目编译打包成WAR包,并部署到tomcat中。
xxl-job-executor-s
pringboot-example
:项目编译打包成springboot类型的可执行JAR包,命令启动即可;
xxl-job-executor-
sample-spring
:项目编译打包成WAR包,并部署到tomcat中。
xxl-job-executor-s
ample-springboot
:项目编译打包成springboot类型的可执行JAR包,命令启动即可;
至此“执行器”项目已经部署结束。
...
...
@@ -326,7 +327,7 @@ XXL-JOB是一个轻量级分布式任务调度框架,其核心设计目标是
- 失败处理策略;调度失败时的处理策略;
失败告警(默认):调度失败时,将会触发失败报警,如发送报警邮件;
失败重试:调度失败时,将会主动进行一次失败重试调度,重试调度后仍然失败将会触发一失败告警。注意当任务以failover方式路由时,每次失败重试将会触发新一轮路由。
- 执行参数:任务执行所需的参数,多个参数时用逗号分隔,任务执行时将会把多个参数
抓
换成数组传入;
- 执行参数:任务执行所需的参数,多个参数时用逗号分隔,任务执行时将会把多个参数
转
换成数组传入;
- 报警邮件:任务调度失败时邮件通知的邮箱地址,支持配置多邮箱地址,配置多个邮箱地址时用逗号分隔;
- 负责人:任务的负责人;
...
...
@@ -337,7 +338,7 @@ XXL-JOB是一个轻量级分布式任务调度框架,其核心设计目标是
-
1、 新建一个继承com.xxl.job.core.handler.IJobHandler的Java类;
-
2、 该类被Spring容器扫描为Bean实例,如加“@Component”注解;
-
3、 添加 “@JobHander(value="自定义jobhandler名称")”注解,注解的value值为自定义的JobHandler名称,该名称对应的是调度中心新建任务的JobHandler属性的值。
(可参考
xxl-job-executor-example项目
中的DemoJobHandler,见下图)
(可参考
Example执行器
中的DemoJobHandler,见下图)
![
输入图片说明
](
https://static.oschina.net/uploads/img/201607/23232347_oLlM.png
"在这里输入图片标题"
)
...
...
@@ -495,7 +496,7 @@ try{
-
/db :“调度数据库”建表脚本
-
/xxl-job-admin :调度中心,项目源码
-
/xxl-job-core :公共Jar依赖
-
/xxl-job-executor-
example :执行器,Demo项目源码
(大家可以在该项目上进行开发,也可以将现有项目改造生成执行器项目)
-
/xxl-job-executor-
samples :执行器,Example项目
(大家可以在该项目上进行开发,也可以将现有项目改造生成执行器项目)
#### 5.2 “调度数据库”配置
XXL-JOB调度模块基于Quartz集群实现,其“调度数据库”是在Quartz的11张集群mysql表基础上扩展而成。
...
...
@@ -944,6 +945,10 @@ Tips: 历史版本(V1.3.x)目前已经Release至稳定版本, 进入维护阶段
-
10、springboot版本执行器,升级至1.5.6.RELEASE版本;
-
11、统一maven依赖版本管理;
#### 6.18 版本 V1.8.2 特性[Coding]
-
1、解决执行器回调URL不支持配置HTTPS时问题;
-
2、规范项目目录,方便扩展多执行器;
#### TODO LIST
-
1、任务权限管理:执行器为粒度分配权限,核心操作校验权限;
-
2、任务分片路由:分片采用一致性Hash算法计算出尽量稳定的分片顺序,即使注册机器存在波动也不会引起分批分片顺序大的波动;目前采用IP自然排序,可以满足需求,待定;
...
...
db/tables_mysql(备份,请忽略).sql
→
d
oc/d
b/tables_mysql(备份,请忽略).sql
浏览文件 @
85179937
文件已移动
db/tables_xxl_job.sql
→
d
oc/d
b/tables_xxl_job.sql
浏览文件 @
85179937
CREATE
TABLE
XXL_JOB_QRTZ_JOB_DETAILS
(
SCHED_NAME
VARCHAR
(
120
)
NOT
NULL
,
JOB_NAME
VARCHAR
(
200
)
NOT
NULL
,
JOB_GROUP
VARCHAR
(
200
)
NOT
NULL
,
DESCRIPTION
VARCHAR
(
250
)
NULL
,
JOB_CLASS_NAME
VARCHAR
(
250
)
NOT
NULL
,
IS_DURABLE
VARCHAR
(
1
)
NOT
NULL
,
IS_NONCONCURRENT
VARCHAR
(
1
)
NOT
NULL
,
IS_UPDATE_DATA
VARCHAR
(
1
)
NOT
NULL
,
REQUESTS_RECOVERY
VARCHAR
(
1
)
NOT
NULL
,
JOB_DATA
BLOB
NULL
,
PRIMARY
KEY
(
SCHED_NAME
,
JOB_NAME
,
JOB_GROUP
)
);
CREATE
TABLE
XXL_JOB_QRTZ_TRIGGERS
(
SCHED_NAME
VARCHAR
(
120
)
NOT
NULL
,
TRIGGER_NAME
VARCHAR
(
200
)
NOT
NULL
,
TRIGGER_GROUP
VARCHAR
(
200
)
NOT
NULL
,
JOB_NAME
VARCHAR
(
200
)
NOT
NULL
,
JOB_GROUP
VARCHAR
(
200
)
NOT
NULL
,
DESCRIPTION
VARCHAR
(
250
)
NULL
,
NEXT_FIRE_TIME
BIGINT
(
13
)
NULL
,
PREV_FIRE_TIME
BIGINT
(
13
)
NULL
,
PRIORITY
INTEGER
NULL
,
TRIGGER_STATE
VARCHAR
(
16
)
NOT
NULL
,
TRIGGER_TYPE
VARCHAR
(
8
)
NOT
NULL
,
START_TIME
BIGINT
(
13
)
NOT
NULL
,
END_TIME
BIGINT
(
13
)
NULL
,
CALENDAR_NAME
VARCHAR
(
200
)
NULL
,
MISFIRE_INSTR
SMALLINT
(
2
)
NULL
,
JOB_DATA
BLOB
NULL
,
PRIMARY
KEY
(
SCHED_NAME
,
TRIGGER_NAME
,
TRIGGER_GROUP
),
FOREIGN
KEY
(
SCHED_NAME
,
JOB_NAME
,
JOB_GROUP
)
REFERENCES
XXL_JOB_QRTZ_JOB_DETAILS
(
SCHED_NAME
,
JOB_NAME
,
JOB_GROUP
)
);
CREATE
TABLE
XXL_JOB_QRTZ_SIMPLE_TRIGGERS
(
SCHED_NAME
VARCHAR
(
120
)
NOT
NULL
,
TRIGGER_NAME
VARCHAR
(
200
)
NOT
NULL
,
TRIGGER_GROUP
VARCHAR
(
200
)
NOT
NULL
,
REPEAT_COUNT
BIGINT
(
7
)
NOT
NULL
,
REPEAT_INTERVAL
BIGINT
(
12
)
NOT
NULL
,
TIMES_TRIGGERED
BIGINT
(
10
)
NOT
NULL
,
PRIMARY
KEY
(
SCHED_NAME
,
TRIGGER_NAME
,
TRIGGER_GROUP
),
FOREIGN
KEY
(
SCHED_NAME
,
TRIGGER_NAME
,
TRIGGER_GROUP
)
REFERENCES
XXL_JOB_QRTZ_TRIGGERS
(
SCHED_NAME
,
TRIGGER_NAME
,
TRIGGER_GROUP
)
);
CREATE
TABLE
XXL_JOB_QRTZ_CRON_TRIGGERS
(
SCHED_NAME
VARCHAR
(
120
)
NOT
NULL
,
TRIGGER_NAME
VARCHAR
(
200
)
NOT
NULL
,
TRIGGER_GROUP
VARCHAR
(
200
)
NOT
NULL
,
CRON_EXPRESSION
VARCHAR
(
200
)
NOT
NULL
,
TIME_ZONE_ID
VARCHAR
(
80
),
PRIMARY
KEY
(
SCHED_NAME
,
TRIGGER_NAME
,
TRIGGER_GROUP
),
FOREIGN
KEY
(
SCHED_NAME
,
TRIGGER_NAME
,
TRIGGER_GROUP
)
REFERENCES
XXL_JOB_QRTZ_TRIGGERS
(
SCHED_NAME
,
TRIGGER_NAME
,
TRIGGER_GROUP
)
);
CREATE
TABLE
XXL_JOB_QRTZ_SIMPROP_TRIGGERS
(
SCHED_NAME
VARCHAR
(
120
)
NOT
NULL
,
TRIGGER_NAME
VARCHAR
(
200
)
NOT
NULL
,
TRIGGER_GROUP
VARCHAR
(
200
)
NOT
NULL
,
STR_PROP_1
VARCHAR
(
512
)
NULL
,
STR_PROP_2
VARCHAR
(
512
)
NULL
,
STR_PROP_3
VARCHAR
(
512
)
NULL
,
INT_PROP_1
INT
NULL
,
INT_PROP_2
INT
NULL
,
LONG_PROP_1
BIGINT
NULL
,
LONG_PROP_2
BIGINT
NULL
,
DEC_PROP_1
NUMERIC
(
13
,
4
)
NULL
,
DEC_PROP_2
NUMERIC
(
13
,
4
)
NULL
,
BOOL_PROP_1
VARCHAR
(
1
)
NULL
,
BOOL_PROP_2
VARCHAR
(
1
)
NULL
,
PRIMARY
KEY
(
SCHED_NAME
,
TRIGGER_NAME
,
TRIGGER_GROUP
),
FOREIGN
KEY
(
SCHED_NAME
,
TRIGGER_NAME
,
TRIGGER_GROUP
)
REFERENCES
XXL_JOB_QRTZ_TRIGGERS
(
SCHED_NAME
,
TRIGGER_NAME
,
TRIGGER_GROUP
)
);
CREATE
TABLE
XXL_JOB_QRTZ_BLOB_TRIGGERS
(
SCHED_NAME
VARCHAR
(
120
)
NOT
NULL
,
TRIGGER_NAME
VARCHAR
(
200
)
NOT
NULL
,
TRIGGER_GROUP
VARCHAR
(
200
)
NOT
NULL
,
BLOB_DATA
BLOB
NULL
,
PRIMARY
KEY
(
SCHED_NAME
,
TRIGGER_NAME
,
TRIGGER_GROUP
),
FOREIGN
KEY
(
SCHED_NAME
,
TRIGGER_NAME
,
TRIGGER_GROUP
)
REFERENCES
XXL_JOB_QRTZ_TRIGGERS
(
SCHED_NAME
,
TRIGGER_NAME
,
TRIGGER_GROUP
)
);
CREATE
TABLE
XXL_JOB_QRTZ_CALENDARS
(
SCHED_NAME
VARCHAR
(
120
)
NOT
NULL
,
CALENDAR_NAME
VARCHAR
(
200
)
NOT
NULL
,
CALENDAR
BLOB
NOT
NULL
,
PRIMARY
KEY
(
SCHED_NAME
,
CALENDAR_NAME
)
);
CREATE
TABLE
XXL_JOB_QRTZ_PAUSED_TRIGGER_GRPS
(
SCHED_NAME
VARCHAR
(
120
)
NOT
NULL
,
TRIGGER_GROUP
VARCHAR
(
200
)
NOT
NULL
,
PRIMARY
KEY
(
SCHED_NAME
,
TRIGGER_GROUP
)
);
CREATE
TABLE
XXL_JOB_QRTZ_FIRED_TRIGGERS
(
SCHED_NAME
VARCHAR
(
120
)
NOT
NULL
,
ENTRY_ID
VARCHAR
(
95
)
NOT
NULL
,
TRIGGER_NAME
VARCHAR
(
200
)
NOT
NULL
,
TRIGGER_GROUP
VARCHAR
(
200
)
NOT
NULL
,
INSTANCE_NAME
VARCHAR
(
200
)
NOT
NULL
,
FIRED_TIME
BIGINT
(
13
)
NOT
NULL
,
SCHED_TIME
BIGINT
(
13
)
NOT
NULL
,
PRIORITY
INTEGER
NOT
NULL
,
STATE
VARCHAR
(
16
)
NOT
NULL
,
JOB_NAME
VARCHAR
(
200
)
NULL
,
JOB_GROUP
VARCHAR
(
200
)
NULL
,
IS_NONCONCURRENT
VARCHAR
(
1
)
NULL
,
REQUESTS_RECOVERY
VARCHAR
(
1
)
NULL
,
PRIMARY
KEY
(
SCHED_NAME
,
ENTRY_ID
)
);
CREATE
TABLE
XXL_JOB_QRTZ_SCHEDULER_STATE
(
SCHED_NAME
VARCHAR
(
120
)
NOT
NULL
,
INSTANCE_NAME
VARCHAR
(
200
)
NOT
NULL
,
LAST_CHECKIN_TIME
BIGINT
(
13
)
NOT
NULL
,
CHECKIN_INTERVAL
BIGINT
(
13
)
NOT
NULL
,
PRIMARY
KEY
(
SCHED_NAME
,
INSTANCE_NAME
)
);
CREATE
TABLE
XXL_JOB_QRTZ_LOCKS
(
SCHED_NAME
VARCHAR
(
120
)
NOT
NULL
,
LOCK_NAME
VARCHAR
(
40
)
NOT
NULL
,
PRIMARY
KEY
(
SCHED_NAME
,
LOCK_NAME
)
);
CREATE
TABLE
`XXL_JOB_QRTZ_TRIGGER_INFO`
(
`id`
int
(
11
)
NOT
NULL
AUTO_INCREMENT
,
`job_group`
int
(
11
)
NOT
NULL
COMMENT
'执行器主键ID'
,
`job_cron`
varchar
(
128
)
NOT
NULL
COMMENT
'任务执行CRON'
,
`job_desc`
varchar
(
255
)
NOT
NULL
,
`add_time`
datetime
DEFAULT
NULL
,
`update_time`
datetime
DEFAULT
NULL
,
`author`
varchar
(
64
)
DEFAULT
NULL
COMMENT
'作者'
,
`alarm_email`
varchar
(
255
)
DEFAULT
NULL
COMMENT
'报警邮件'
,
`executor_route_strategy`
varchar
(
50
)
DEFAULT
NULL
COMMENT
'执行器路由策略'
,
`executor_handler`
varchar
(
255
)
DEFAULT
NULL
COMMENT
'执行器任务handler'
,
`executor_param`
varchar
(
255
)
DEFAULT
NULL
COMMENT
'执行器任务参数'
,
`executor_block_strategy`
varchar
(
50
)
DEFAULT
NULL
COMMENT
'阻塞处理策略'
,
`executor_fail_strategy`
varchar
(
50
)
DEFAULT
NULL
COMMENT
'失败处理策略'
,
`glue_type`
varchar
(
50
)
NOT
NULL
COMMENT
'GLUE类型'
,
`glue_source`
text
COMMENT
'GLUE源代码'
,
`glue_remark`
varchar
(
128
)
DEFAULT
NULL
COMMENT
'GLUE备注'
,
`glue_updatetime`
datetime
DEFAULT
NULL
COMMENT
'GLUE更新时间'
,
`child_jobkey`
varchar
(
255
)
DEFAULT
NULL
COMMENT
'子任务Key'
,
PRIMARY
KEY
(
`id`
)
)
ENGINE
=
InnoDB
DEFAULT
CHARSET
=
utf8
;
CREATE
TABLE
`XXL_JOB_QRTZ_TRIGGER_LOG`
(
`id`
int
(
11
)
NOT
NULL
AUTO_INCREMENT
,
`job_group`
int
(
11
)
NOT
NULL
COMMENT
'执行器主键ID'
,
`job_id`
int
(
11
)
NOT
NULL
COMMENT
'任务,主键ID'
,
`glue_type`
varchar
(
50
)
DEFAULT
NULL
COMMENT
'GLUE类型'
,
`executor_address`
varchar
(
255
)
DEFAULT
NULL
COMMENT
'执行器地址,本次执行的地址'
,
`executor_handler`
varchar
(
255
)
DEFAULT
NULL
COMMENT
'执行器任务handler'
,
`executor_param`
varchar
(
255
)
DEFAULT
NULL
COMMENT
'executor_param'
,
`trigger_time`
datetime
DEFAULT
NULL
COMMENT
'调度-时间'
,
`trigger_code`
varchar
(
255
)
NOT
NULL
DEFAULT
'0'
COMMENT
'调度-结果'
,
`trigger_msg`
varchar
(
2048
)
DEFAULT
NULL
COMMENT
'调度-日志'
,
`handle_time`
datetime
DEFAULT
NULL
COMMENT
'执行-时间'
,
`handle_code`
varchar
(
255
)
NOT
NULL
DEFAULT
'0'
COMMENT
'执行-状态'
,
`handle_msg`
varchar
(
2048
)
DEFAULT
NULL
COMMENT
'执行-日志'
,
PRIMARY
KEY
(
`id`
)
)
ENGINE
=
InnoDB
DEFAULT
CHARSET
=
utf8
;
CREATE
TABLE
`XXL_JOB_QRTZ_TRIGGER_LOGGLUE`
(
`id`
int
(
11
)
NOT
NULL
AUTO_INCREMENT
,
`job_id`
int
(
11
)
NOT
NULL
COMMENT
'任务,主键ID'
,
`glue_type`
varchar
(
50
)
DEFAULT
NULL
COMMENT
'GLUE类型'
,
`glue_source`
text
COMMENT
'GLUE源代码'
,
`glue_remark`
varchar
(
128
)
NOT
NULL
COMMENT
'GLUE备注'
,
`add_time`
timestamp
NULL
DEFAULT
NULL
,
`update_time`
timestamp
NULL
DEFAULT
NULL
ON
UPDATE
CURRENT_TIMESTAMP
,
PRIMARY
KEY
(
`id`
)
)
ENGINE
=
InnoDB
DEFAULT
CHARSET
=
utf8
;
CREATE
TABLE
XXL_JOB_QRTZ_TRIGGER_REGISTRY
(
`id`
int
(
11
)
NOT
NULL
AUTO_INCREMENT
,
`registry_group`
varchar
(
255
)
NOT
NULL
,
`registry_key`
varchar
(
255
)
NOT
NULL
,
`registry_value`
varchar
(
255
)
NOT
NULL
,
`update_time`
timestamp
NOT
NULL
DEFAULT
CURRENT_TIMESTAMP
,
PRIMARY
KEY
(
`id`
)
)
ENGINE
=
InnoDB
DEFAULT
CHARSET
=
utf8
;
CREATE
TABLE
`XXL_JOB_QRTZ_TRIGGER_GROUP`
(
`id`
int
(
11
)
NOT
NULL
AUTO_INCREMENT
,
`app_name`
varchar
(
64
)
NOT
NULL
COMMENT
'执行器AppName'
,
`title`
varchar
(
12
)
NOT
NULL
COMMENT
'执行器名称'
,
`order`
tinyint
(
4
)
NOT
NULL
DEFAULT
'0'
COMMENT
'排序'
,
`address_type`
tinyint
(
4
)
NOT
NULL
DEFAULT
'0'
COMMENT
'执行器地址类型:0=自动注册、1=手动录入'
,
`address_list`
varchar
(
200
)
DEFAULT
NULL
COMMENT
'执行器地址列表,多地址逗号分隔'
,
PRIMARY
KEY
(
`id`
)
)
ENGINE
=
InnoDB
DEFAULT
CHARSET
=
utf8
;
INSERT
INTO
`XXL_JOB_QRTZ_TRIGGER_GROUP`
(
`app_name`
,
`title`
,
`order`
,
`address_type`
,
`address_list`
)
values
(
'xxl-job-executor-
example'
,
'示例执行器'
,
'1'
,
'0'
,
null
);
commit
;
CREATE
TABLE
XXL_JOB_QRTZ_JOB_DETAILS
(
SCHED_NAME
VARCHAR
(
120
)
NOT
NULL
,
JOB_NAME
VARCHAR
(
200
)
NOT
NULL
,
JOB_GROUP
VARCHAR
(
200
)
NOT
NULL
,
DESCRIPTION
VARCHAR
(
250
)
NULL
,
JOB_CLASS_NAME
VARCHAR
(
250
)
NOT
NULL
,
IS_DURABLE
VARCHAR
(
1
)
NOT
NULL
,
IS_NONCONCURRENT
VARCHAR
(
1
)
NOT
NULL
,
IS_UPDATE_DATA
VARCHAR
(
1
)
NOT
NULL
,
REQUESTS_RECOVERY
VARCHAR
(
1
)
NOT
NULL
,
JOB_DATA
BLOB
NULL
,
PRIMARY
KEY
(
SCHED_NAME
,
JOB_NAME
,
JOB_GROUP
)
);
CREATE
TABLE
XXL_JOB_QRTZ_TRIGGERS
(
SCHED_NAME
VARCHAR
(
120
)
NOT
NULL
,
TRIGGER_NAME
VARCHAR
(
200
)
NOT
NULL
,
TRIGGER_GROUP
VARCHAR
(
200
)
NOT
NULL
,
JOB_NAME
VARCHAR
(
200
)
NOT
NULL
,
JOB_GROUP
VARCHAR
(
200
)
NOT
NULL
,
DESCRIPTION
VARCHAR
(
250
)
NULL
,
NEXT_FIRE_TIME
BIGINT
(
13
)
NULL
,
PREV_FIRE_TIME
BIGINT
(
13
)
NULL
,
PRIORITY
INTEGER
NULL
,
TRIGGER_STATE
VARCHAR
(
16
)
NOT
NULL
,
TRIGGER_TYPE
VARCHAR
(
8
)
NOT
NULL
,
START_TIME
BIGINT
(
13
)
NOT
NULL
,
END_TIME
BIGINT
(
13
)
NULL
,
CALENDAR_NAME
VARCHAR
(
200
)
NULL
,
MISFIRE_INSTR
SMALLINT
(
2
)
NULL
,
JOB_DATA
BLOB
NULL
,
PRIMARY
KEY
(
SCHED_NAME
,
TRIGGER_NAME
,
TRIGGER_GROUP
),
FOREIGN
KEY
(
SCHED_NAME
,
JOB_NAME
,
JOB_GROUP
)
REFERENCES
XXL_JOB_QRTZ_JOB_DETAILS
(
SCHED_NAME
,
JOB_NAME
,
JOB_GROUP
)
);
CREATE
TABLE
XXL_JOB_QRTZ_SIMPLE_TRIGGERS
(
SCHED_NAME
VARCHAR
(
120
)
NOT
NULL
,
TRIGGER_NAME
VARCHAR
(
200
)
NOT
NULL
,
TRIGGER_GROUP
VARCHAR
(
200
)
NOT
NULL
,
REPEAT_COUNT
BIGINT
(
7
)
NOT
NULL
,
REPEAT_INTERVAL
BIGINT
(
12
)
NOT
NULL
,
TIMES_TRIGGERED
BIGINT
(
10
)
NOT
NULL
,
PRIMARY
KEY
(
SCHED_NAME
,
TRIGGER_NAME
,
TRIGGER_GROUP
),
FOREIGN
KEY
(
SCHED_NAME
,
TRIGGER_NAME
,
TRIGGER_GROUP
)
REFERENCES
XXL_JOB_QRTZ_TRIGGERS
(
SCHED_NAME
,
TRIGGER_NAME
,
TRIGGER_GROUP
)
);
CREATE
TABLE
XXL_JOB_QRTZ_CRON_TRIGGERS
(
SCHED_NAME
VARCHAR
(
120
)
NOT
NULL
,
TRIGGER_NAME
VARCHAR
(
200
)
NOT
NULL
,
TRIGGER_GROUP
VARCHAR
(
200
)
NOT
NULL
,
CRON_EXPRESSION
VARCHAR
(
200
)
NOT
NULL
,
TIME_ZONE_ID
VARCHAR
(
80
),
PRIMARY
KEY
(
SCHED_NAME
,
TRIGGER_NAME
,
TRIGGER_GROUP
),
FOREIGN
KEY
(
SCHED_NAME
,
TRIGGER_NAME
,
TRIGGER_GROUP
)
REFERENCES
XXL_JOB_QRTZ_TRIGGERS
(
SCHED_NAME
,
TRIGGER_NAME
,
TRIGGER_GROUP
)
);
CREATE
TABLE
XXL_JOB_QRTZ_SIMPROP_TRIGGERS
(
SCHED_NAME
VARCHAR
(
120
)
NOT
NULL
,
TRIGGER_NAME
VARCHAR
(
200
)
NOT
NULL
,
TRIGGER_GROUP
VARCHAR
(
200
)
NOT
NULL
,
STR_PROP_1
VARCHAR
(
512
)
NULL
,
STR_PROP_2
VARCHAR
(
512
)
NULL
,
STR_PROP_3
VARCHAR
(
512
)
NULL
,
INT_PROP_1
INT
NULL
,
INT_PROP_2
INT
NULL
,
LONG_PROP_1
BIGINT
NULL
,
LONG_PROP_2
BIGINT
NULL
,
DEC_PROP_1
NUMERIC
(
13
,
4
)
NULL
,
DEC_PROP_2
NUMERIC
(
13
,
4
)
NULL
,
BOOL_PROP_1
VARCHAR
(
1
)
NULL
,
BOOL_PROP_2
VARCHAR
(
1
)
NULL
,
PRIMARY
KEY
(
SCHED_NAME
,
TRIGGER_NAME
,
TRIGGER_GROUP
),
FOREIGN
KEY
(
SCHED_NAME
,
TRIGGER_NAME
,
TRIGGER_GROUP
)
REFERENCES
XXL_JOB_QRTZ_TRIGGERS
(
SCHED_NAME
,
TRIGGER_NAME
,
TRIGGER_GROUP
)
);
CREATE
TABLE
XXL_JOB_QRTZ_BLOB_TRIGGERS
(
SCHED_NAME
VARCHAR
(
120
)
NOT
NULL
,
TRIGGER_NAME
VARCHAR
(
200
)
NOT
NULL
,
TRIGGER_GROUP
VARCHAR
(
200
)
NOT
NULL
,
BLOB_DATA
BLOB
NULL
,
PRIMARY
KEY
(
SCHED_NAME
,
TRIGGER_NAME
,
TRIGGER_GROUP
),
FOREIGN
KEY
(
SCHED_NAME
,
TRIGGER_NAME
,
TRIGGER_GROUP
)
REFERENCES
XXL_JOB_QRTZ_TRIGGERS
(
SCHED_NAME
,
TRIGGER_NAME
,
TRIGGER_GROUP
)
);
CREATE
TABLE
XXL_JOB_QRTZ_CALENDARS
(
SCHED_NAME
VARCHAR
(
120
)
NOT
NULL
,
CALENDAR_NAME
VARCHAR
(
200
)
NOT
NULL
,
CALENDAR
BLOB
NOT
NULL
,
PRIMARY
KEY
(
SCHED_NAME
,
CALENDAR_NAME
)
);
CREATE
TABLE
XXL_JOB_QRTZ_PAUSED_TRIGGER_GRPS
(
SCHED_NAME
VARCHAR
(
120
)
NOT
NULL
,
TRIGGER_GROUP
VARCHAR
(
200
)
NOT
NULL
,
PRIMARY
KEY
(
SCHED_NAME
,
TRIGGER_GROUP
)
);
CREATE
TABLE
XXL_JOB_QRTZ_FIRED_TRIGGERS
(
SCHED_NAME
VARCHAR
(
120
)
NOT
NULL
,
ENTRY_ID
VARCHAR
(
95
)
NOT
NULL
,
TRIGGER_NAME
VARCHAR
(
200
)
NOT
NULL
,
TRIGGER_GROUP
VARCHAR
(
200
)
NOT
NULL
,
INSTANCE_NAME
VARCHAR
(
200
)
NOT
NULL
,
FIRED_TIME
BIGINT
(
13
)
NOT
NULL
,
SCHED_TIME
BIGINT
(
13
)
NOT
NULL
,
PRIORITY
INTEGER
NOT
NULL
,
STATE
VARCHAR
(
16
)
NOT
NULL
,
JOB_NAME
VARCHAR
(
200
)
NULL
,
JOB_GROUP
VARCHAR
(
200
)
NULL
,
IS_NONCONCURRENT
VARCHAR
(
1
)
NULL
,
REQUESTS_RECOVERY
VARCHAR
(
1
)
NULL
,
PRIMARY
KEY
(
SCHED_NAME
,
ENTRY_ID
)
);
CREATE
TABLE
XXL_JOB_QRTZ_SCHEDULER_STATE
(
SCHED_NAME
VARCHAR
(
120
)
NOT
NULL
,
INSTANCE_NAME
VARCHAR
(
200
)
NOT
NULL
,
LAST_CHECKIN_TIME
BIGINT
(
13
)
NOT
NULL
,
CHECKIN_INTERVAL
BIGINT
(
13
)
NOT
NULL
,
PRIMARY
KEY
(
SCHED_NAME
,
INSTANCE_NAME
)
);
CREATE
TABLE
XXL_JOB_QRTZ_LOCKS
(
SCHED_NAME
VARCHAR
(
120
)
NOT
NULL
,
LOCK_NAME
VARCHAR
(
40
)
NOT
NULL
,
PRIMARY
KEY
(
SCHED_NAME
,
LOCK_NAME
)
);
CREATE
TABLE
`XXL_JOB_QRTZ_TRIGGER_INFO`
(
`id`
int
(
11
)
NOT
NULL
AUTO_INCREMENT
,
`job_group`
int
(
11
)
NOT
NULL
COMMENT
'执行器主键ID'
,
`job_cron`
varchar
(
128
)
NOT
NULL
COMMENT
'任务执行CRON'
,
`job_desc`
varchar
(
255
)
NOT
NULL
,
`add_time`
datetime
DEFAULT
NULL
,
`update_time`
datetime
DEFAULT
NULL
,
`author`
varchar
(
64
)
DEFAULT
NULL
COMMENT
'作者'
,
`alarm_email`
varchar
(
255
)
DEFAULT
NULL
COMMENT
'报警邮件'
,
`executor_route_strategy`
varchar
(
50
)
DEFAULT
NULL
COMMENT
'执行器路由策略'
,
`executor_handler`
varchar
(
255
)
DEFAULT
NULL
COMMENT
'执行器任务handler'
,
`executor_param`
varchar
(
255
)
DEFAULT
NULL
COMMENT
'执行器任务参数'
,
`executor_block_strategy`
varchar
(
50
)
DEFAULT
NULL
COMMENT
'阻塞处理策略'
,
`executor_fail_strategy`
varchar
(
50
)
DEFAULT
NULL
COMMENT
'失败处理策略'
,
`glue_type`
varchar
(
50
)
NOT
NULL
COMMENT
'GLUE类型'
,
`glue_source`
text
COMMENT
'GLUE源代码'
,
`glue_remark`
varchar
(
128
)
DEFAULT
NULL
COMMENT
'GLUE备注'
,
`glue_updatetime`
datetime
DEFAULT
NULL
COMMENT
'GLUE更新时间'
,
`child_jobkey`
varchar
(
255
)
DEFAULT
NULL
COMMENT
'子任务Key'
,
PRIMARY
KEY
(
`id`
)
)
ENGINE
=
InnoDB
DEFAULT
CHARSET
=
utf8
;
CREATE
TABLE
`XXL_JOB_QRTZ_TRIGGER_LOG`
(
`id`
int
(
11
)
NOT
NULL
AUTO_INCREMENT
,
`job_group`
int
(
11
)
NOT
NULL
COMMENT
'执行器主键ID'
,
`job_id`
int
(
11
)
NOT
NULL
COMMENT
'任务,主键ID'
,
`glue_type`
varchar
(
50
)
DEFAULT
NULL
COMMENT
'GLUE类型'
,
`executor_address`
varchar
(
255
)
DEFAULT
NULL
COMMENT
'执行器地址,本次执行的地址'
,
`executor_handler`
varchar
(
255
)
DEFAULT
NULL
COMMENT
'执行器任务handler'
,
`executor_param`
varchar
(
255
)
DEFAULT
NULL
COMMENT
'executor_param'
,
`trigger_time`
datetime
DEFAULT
NULL
COMMENT
'调度-时间'
,
`trigger_code`
varchar
(
255
)
NOT
NULL
DEFAULT
'0'
COMMENT
'调度-结果'
,
`trigger_msg`
varchar
(
2048
)
DEFAULT
NULL
COMMENT
'调度-日志'
,
`handle_time`
datetime
DEFAULT
NULL
COMMENT
'执行-时间'
,
`handle_code`
varchar
(
255
)
NOT
NULL
DEFAULT
'0'
COMMENT
'执行-状态'
,
`handle_msg`
varchar
(
2048
)
DEFAULT
NULL
COMMENT
'执行-日志'
,
PRIMARY
KEY
(
`id`
)
)
ENGINE
=
InnoDB
DEFAULT
CHARSET
=
utf8
;
CREATE
TABLE
`XXL_JOB_QRTZ_TRIGGER_LOGGLUE`
(
`id`
int
(
11
)
NOT
NULL
AUTO_INCREMENT
,
`job_id`
int
(
11
)
NOT
NULL
COMMENT
'任务,主键ID'
,
`glue_type`
varchar
(
50
)
DEFAULT
NULL
COMMENT
'GLUE类型'
,
`glue_source`
text
COMMENT
'GLUE源代码'
,
`glue_remark`
varchar
(
128
)
NOT
NULL
COMMENT
'GLUE备注'
,
`add_time`
timestamp
NULL
DEFAULT
NULL
,
`update_time`
timestamp
NULL
DEFAULT
NULL
ON
UPDATE
CURRENT_TIMESTAMP
,
PRIMARY
KEY
(
`id`
)
)
ENGINE
=
InnoDB
DEFAULT
CHARSET
=
utf8
;
CREATE
TABLE
XXL_JOB_QRTZ_TRIGGER_REGISTRY
(
`id`
int
(
11
)
NOT
NULL
AUTO_INCREMENT
,
`registry_group`
varchar
(
255
)
NOT
NULL
,
`registry_key`
varchar
(
255
)
NOT
NULL
,
`registry_value`
varchar
(
255
)
NOT
NULL
,
`update_time`
timestamp
NOT
NULL
DEFAULT
CURRENT_TIMESTAMP
,
PRIMARY
KEY
(
`id`
)
)
ENGINE
=
InnoDB
DEFAULT
CHARSET
=
utf8
;
CREATE
TABLE
`XXL_JOB_QRTZ_TRIGGER_GROUP`
(
`id`
int
(
11
)
NOT
NULL
AUTO_INCREMENT
,
`app_name`
varchar
(
64
)
NOT
NULL
COMMENT
'执行器AppName'
,
`title`
varchar
(
12
)
NOT
NULL
COMMENT
'执行器名称'
,
`order`
tinyint
(
4
)
NOT
NULL
DEFAULT
'0'
COMMENT
'排序'
,
`address_type`
tinyint
(
4
)
NOT
NULL
DEFAULT
'0'
COMMENT
'执行器地址类型:0=自动注册、1=手动录入'
,
`address_list`
varchar
(
200
)
DEFAULT
NULL
COMMENT
'执行器地址列表,多地址逗号分隔'
,
PRIMARY
KEY
(
`id`
)
)
ENGINE
=
InnoDB
DEFAULT
CHARSET
=
utf8
;
INSERT
INTO
`XXL_JOB_QRTZ_TRIGGER_GROUP`
(
`app_name`
,
`title`
,
`order`
,
`address_type`
,
`address_list`
)
values
(
'xxl-job-executor-
sample'
,
'示例执行器'
,
'1'
,
'0'
,
null
);
commit
;
pom.xml
浏览文件 @
85179937
...
...
@@ -13,8 +13,7 @@
<modules>
<module>
xxl-job-core
</module>
<module>
xxl-job-admin
</module>
<module>
xxl-job-executor-example
</module>
<module>
xxl-job-executor-springboot-example
</module>
<module>
xxl-job-executor-samples
</module>
</modules>
<properties>
...
...
xxl-job-core/src/main/java/com/xxl/job/core/executor/XxlJobExecutor.java
浏览文件 @
85179937
...
...
@@ -71,7 +71,9 @@ public class XxlJobExecutor implements ApplicationContextAware {
initAdminBizList
(
adminAddresses
,
accessToken
);
// init executor-jobHandlerRepository
initJobHandlerRepository
(
applicationContext
);
if
(
applicationContext
!=
null
)
{
initJobHandlerRepository
(
applicationContext
);
}
// init logpath
if
(
logPath
!=
null
&&
logPath
.
trim
().
length
()>
0
)
{
...
...
xxl-job-core/src/main/java/com/xxl/job/core/log/XxlJobFileAppender.java
浏览文件 @
85179937
...
...
@@ -18,7 +18,7 @@ public class XxlJobFileAppender {
// for JobThread (support log for child thread of job handler)
//public static ThreadLocal<String> contextHolder = new ThreadLocal<String>();
public
static
final
InheritableThreadLocal
<
String
>
contextHolder
=
new
InheritableThreadLocal
<
String
>();
public
static
final
SimpleDateFormat
sdf
=
new
SimpleDateFormat
(
"yyyy-MM-dd"
);
public
static
final
SimpleDateFormat
sdf
=
new
SimpleDateFormat
(
"yyyy-MM-dd"
);
// TODO, concurrent issues
public
static
String
logPath
=
"/data/applogs/xxl-job/jobhandler/"
;
/**
...
...
xxl-job-executor-samples/pom.xml
0 → 100644
浏览文件 @
85179937
<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>
<parent>
<groupId>
com.xuxueli
</groupId>
<artifactId>
xxl-job
</artifactId>
<version>
1.8.2-SNAPSHOT
</version>
</parent>
<artifactId>
xxl-job-executor-samples
</artifactId>
<packaging>
pom
</packaging>
<modules>
<module>
xxl-job-executor-sample-spring
</module>
<module>
xxl-job-executor-sample-springboot
</module>
</modules>
</project>
\ No newline at end of file
xxl-job-executor-
example
/pom.xml
→
xxl-job-executor-
samples/xxl-job-executor-sample-spring
/pom.xml
浏览文件 @
85179937
<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>
<parent>
<groupId>
com.xuxueli
</groupId>
<artifactId>
xxl-job
</artifactId>
<version>
1.8.2-SNAPSHOT
</version>
</parent>
<artifactId>
xxl-job-executor-
example
</artifactId>
<packaging>
war
</packaging>
<name>
${project.artifactId}
</name>
<description>
Executor project for spring boot.
</description>
<url>
http://www.xuxueli.com/
</url>
<dependencies>
<!-- spring-webmvc -->
<dependency>
<groupId>
org.springframework
</groupId>
<artifactId>
spring-webmvc
</artifactId>
<version>
${spring.version}
</version>
</dependency>
<!-- slf4j -->
<dependency>
<groupId>
org.slf4j
</groupId>
<artifactId>
slf4j-log4j12
</artifactId>
<version>
${slf4j-api.version}
</version>
</dependency>
<!-- xxl-job-core -->
<dependency>
<groupId>
com.xuxueli
</groupId>
<artifactId>
xxl-job-core
</artifactId>
<version>
${project.parent.version}
</version>
</dependency>
</dependencies>
<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>
<parent>
<groupId>
com.xuxueli
</groupId>
<artifactId>
xxl-job
-executor-samples
</artifactId>
<version>
1.8.2-SNAPSHOT
</version>
</parent>
<artifactId>
xxl-job-executor-
sample-spring
</artifactId>
<packaging>
war
</packaging>
<name>
${project.artifactId}
</name>
<description>
Executor project for spring boot.
</description>
<url>
http://www.xuxueli.com/
</url>
<dependencies>
<!-- spring-webmvc -->
<dependency>
<groupId>
org.springframework
</groupId>
<artifactId>
spring-webmvc
</artifactId>
<version>
${spring.version}
</version>
</dependency>
<!-- slf4j -->
<dependency>
<groupId>
org.slf4j
</groupId>
<artifactId>
slf4j-log4j12
</artifactId>
<version>
${slf4j-api.version}
</version>
</dependency>
<!-- xxl-job-core -->
<dependency>
<groupId>
com.xuxueli
</groupId>
<artifactId>
xxl-job-core
</artifactId>
<version>
${project.parent.version}
</version>
</dependency>
</dependencies>
</project>
\ No newline at end of file
xxl-job-executor-
example
/src/main/java/com/xxl/job/executor/service/jobhandler/DemoJobHandler.java
→
xxl-job-executor-
samples/xxl-job-executor-sample-spring
/src/main/java/com/xxl/job/executor/service/jobhandler/DemoJobHandler.java
浏览文件 @
85179937
package
com.xxl.job.executor.service.jobhandler
;
import
com.xxl.job.core.biz.model.ReturnT
;
import
com.xxl.job.core.handler.IJobHandler
;
import
com.xxl.job.core.handler.annotation.JobHander
;
import
com.xxl.job.core.log.XxlJobLogger
;
import
org.springframework.stereotype.Component
;
import
java.util.concurrent.TimeUnit
;
/**
* 任务Handler的一个Demo(Bean模式)
*
* 开发步骤:
* 1、新建一个继承com.xxl.job.core.handler.IJobHandler的Java类;
* 2、该类被Spring容器扫描为Bean实例,如加“@Component”注解;
* 3、添加 “@JobHander(value="自定义jobhandler名称")”注解,注解的value值为自定义的JobHandler名称,该名称对应的是调度中心新建任务的JobHandler属性的值。
* 4、执行日志:需要通过 "XxlJobLogger.log" 打印执行日志;
*
* @author xuxueli 2015-12-19 19:43:36
*/
@JobHander
(
value
=
"demoJobHandler"
)
@Component
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
;
}
}
package
com.xxl.job.executor.service.jobhandler
;
import
com.xxl.job.core.biz.model.ReturnT
;
import
com.xxl.job.core.handler.IJobHandler
;
import
com.xxl.job.core.handler.annotation.JobHander
;
import
com.xxl.job.core.log.XxlJobLogger
;
import
org.springframework.stereotype.Component
;
import
java.util.concurrent.TimeUnit
;
/**
* 任务Handler的一个Demo(Bean模式)
*
* 开发步骤:
* 1、新建一个继承com.xxl.job.core.handler.IJobHandler的Java类;
* 2、该类被Spring容器扫描为Bean实例,如加“@Component”注解;
* 3、添加 “@JobHander(value="自定义jobhandler名称")”注解,注解的value值为自定义的JobHandler名称,该名称对应的是调度中心新建任务的JobHandler属性的值。
* 4、执行日志:需要通过 "XxlJobLogger.log" 打印执行日志;
*
* @author xuxueli 2015-12-19 19:43:36
*/
@JobHander
(
value
=
"demoJobHandler"
)
@Component
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-
example
/src/main/java/com/xxl/job/executor/service/jobhandler/ShardingJobHandler.java
→
xxl-job-executor-
samples/xxl-job-executor-sample-spring
/src/main/java/com/xxl/job/executor/service/jobhandler/ShardingJobHandler.java
浏览文件 @
85179937
文件已移动
xxl-job-executor-
example
/src/main/resources/applicationcontext-xxl-job.xml
→
xxl-job-executor-
samples/xxl-job-executor-sample-spring
/src/main/resources/applicationcontext-xxl-job.xml
浏览文件 @
85179937
<?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-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd"
>
<bean
id=
"propertyConfigurer"
class=
"org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"
>
<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.xxl.job.executor.service.jobhandler"
/>
<!-- 配置02、执行器 -->
<bean
id=
"xxlJobExecutor"
class=
"com.xxl.job.core.executor.XxlJobExecutor"
init-method=
"start"
destroy-method=
"destroy"
>
<!-- 执行器IP[选填],为空则自动获取 -->
<property
name=
"ip"
value=
"${xxl.job.executor.ip}"
/>
<!-- 执行器端口号[必须] -->
<property
name=
"port"
value=
"${xxl.job.executor.port}"
/>
<!-- 执行器AppName[选填],为空则关闭自动注册 -->
<property
name=
"appName"
value=
"${xxl.job.executor.appname}"
/>
<!-- 执行器注册中心地址[选填],为空则关闭自动注册 -->
<property
name=
"adminAddresses"
value=
"${xxl.job.admin.addresses}"
/>
<!-- 执行器日志路径[必填] -->
<property
name=
"logPath"
value=
"${xxl.job.executor.logpath}"
/>
<!-- 访问令牌,非空则进行匹配校验[选填] -->
<property
name=
"accessToken"
value=
"${xxl.job.accessToken}"
/>
</bean>
<?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-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd"
>
<bean
id=
"propertyConfigurer"
class=
"org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"
>
<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.xxl.job.executor.service.jobhandler"
/>
<!-- 配置02、执行器 -->
<bean
id=
"xxlJobExecutor"
class=
"com.xxl.job.core.executor.XxlJobExecutor"
init-method=
"start"
destroy-method=
"destroy"
>
<!-- 执行器IP[选填],为空则自动获取 -->
<property
name=
"ip"
value=
"${xxl.job.executor.ip}"
/>
<!-- 执行器端口号[必须] -->
<property
name=
"port"
value=
"${xxl.job.executor.port}"
/>
<!-- 执行器AppName[选填],为空则关闭自动注册 -->
<property
name=
"appName"
value=
"${xxl.job.executor.appname}"
/>
<!-- 执行器注册中心地址[选填],为空则关闭自动注册 -->
<property
name=
"adminAddresses"
value=
"${xxl.job.admin.addresses}"
/>
<!-- 执行器日志路径[必填] -->
<property
name=
"logPath"
value=
"${xxl.job.executor.logpath}"
/>
<!-- 访问令牌,非空则进行匹配校验[选填] -->
<property
name=
"accessToken"
value=
"${xxl.job.accessToken}"
/>
</bean>
</beans>
\ No newline at end of file
xxl-job-executor-
example
/src/main/resources/log4j.xml
→
xxl-job-executor-
samples/xxl-job-executor-sample-spring
/src/main/resources/log4j.xml
浏览文件 @
85179937
...
...
@@ -5,16 +5,16 @@
<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-
example
[%c]-[%t]-[%M]-[%L]-[%p] %m%n"
/>
<param
name=
"ConversionPattern"
value=
"%-d{yyyy-MM-dd HH:mm:ss} xxl-job-executor-
sample-spring
[%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-
example
.log"
/>
<param
name=
"file"
value=
"/data/applogs/xxl-job/xxl-job-executor-
sample-spring
.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-
example
[%c]-[%t]-[%M]-[%L]-[%p] %m%n"
/>
<param
name=
"ConversionPattern"
value=
"%-d{yyyy-MM-dd HH:mm:ss} xxl-job-executor-
sample-spring
[%c]-[%t]-[%M]-[%L]-[%p] %m%n"
/>
</layout>
</appender>
...
...
xxl-job-executor-
example
/src/main/resources/xxl-job-executor.properties
→
xxl-job-executor-
samples/xxl-job-executor-sample-spring
/src/main/resources/xxl-job-executor.properties
浏览文件 @
85179937
...
...
@@ -2,7 +2,7 @@
xxl.job.admin.addresses
=
http://127.0.0.1:8080/xxl-job-admin
### xxl-job executor address
xxl.job.executor.appname
=
xxl-job-executor-
ex
ample
xxl.job.executor.appname
=
xxl-job-executor-
s
ample
xxl.job.executor.ip
=
xxl.job.executor.port
=
9999
...
...
xxl-job-executor-
example
/src/main/webapp/WEB-INF/web.xml
→
xxl-job-executor-
samples/xxl-job-executor-sample-spring
/src/main/webapp/WEB-INF/web.xml
浏览文件 @
85179937
<?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"
>
<context-param>
<param-name>
webAppRootKey
</param-name>
<param-value>
xxl-job-
client-demo
</param-value>
</context-param>
<context-param>
<param-name>
contextConfigLocation
</param-name>
<param-value>
classpath*:applicationcontext-*.xml
</param-value>
</context-param>
<listener>
<listener-class>
org.springframework.web.util.Log4jConfigListener
</listener-class>
</listener>
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
<welcome-file-list>
<welcome-file>
index.html
</welcome-file>
</welcome-file-list>
<?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"
>
<context-param>
<param-name>
webAppRootKey
</param-name>
<param-value>
xxl-job-
executor-sample-spring
</param-value>
</context-param>
<context-param>
<param-name>
contextConfigLocation
</param-name>
<param-value>
classpath*:applicationcontext-*.xml
</param-value>
</context-param>
<listener>
<listener-class>
org.springframework.web.util.Log4jConfigListener
</listener-class>
</listener>
<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>
\ No newline at end of file
xxl-job-executor-
example
/src/main/webapp/index.html
→
xxl-job-executor-
samples/xxl-job-executor-sample-spring
/src/main/webapp/index.html
浏览文件 @
85179937
文件已移动
xxl-job-executor-
example
/src/test/java/com/xxl/executor/test/DemoJobHandlerTest.java
→
xxl-job-executor-
samples/xxl-job-executor-sample-spring
/src/test/java/com/xxl/executor/test/DemoJobHandlerTest.java
浏览文件 @
85179937
文件已移动
xxl-job-executor-s
pringboot-example
/pom.xml
→
xxl-job-executor-s
amples/xxl-job-executor-sample-springboot
/pom.xml
浏览文件 @
85179937
...
...
@@ -5,10 +5,10 @@
<modelVersion>
4.0.0
</modelVersion>
<parent>
<groupId>
com.xuxueli
</groupId>
<artifactId>
xxl-job
</artifactId>
<artifactId>
xxl-job
-executor-samples
</artifactId>
<version>
1.8.2-SNAPSHOT
</version>
</parent>
<artifactId>
xxl-job-executor-s
pringboot-example
</artifactId>
<artifactId>
xxl-job-executor-s
ample-springboot
</artifactId>
<packaging>
jar
</packaging>
<name>
${project.artifactId}
</name>
...
...
xxl-job-executor-s
pringboot-example
/src/main/java/com/xxl/job/executor/Application.java
→
xxl-job-executor-s
amples/xxl-job-executor-sample-springboot
/src/main/java/com/xxl/job/executor/Application.java
浏览文件 @
85179937
文件已移动
xxl-job-executor-s
pringboot-example
/src/main/java/com/xxl/job/executor/core/config/XxlJobConfig.java
→
xxl-job-executor-s
amples/xxl-job-executor-sample-springboot
/src/main/java/com/xxl/job/executor/core/config/XxlJobConfig.java
浏览文件 @
85179937
文件已移动
xxl-job-executor-s
pringboot-example
/src/main/java/com/xxl/job/executor/mvc/controller/IndexController.java
→
xxl-job-executor-s
amples/xxl-job-executor-sample-springboot
/src/main/java/com/xxl/job/executor/mvc/controller/IndexController.java
浏览文件 @
85179937
文件已移动
xxl-job-executor-s
pringboot-example
/src/main/java/com/xxl/job/executor/service/jobhandler/DemoJobHandler.java
→
xxl-job-executor-s
amples/xxl-job-executor-sample-springboot
/src/main/java/com/xxl/job/executor/service/jobhandler/DemoJobHandler.java
浏览文件 @
85179937
文件已移动
xxl-job-executor-s
pringboot-example
/src/main/java/com/xxl/job/executor/service/jobhandler/ShardingJobHandler.java
→
xxl-job-executor-s
amples/xxl-job-executor-sample-springboot
/src/main/java/com/xxl/job/executor/service/jobhandler/ShardingJobHandler.java
浏览文件 @
85179937
文件已移动
xxl-job-executor-s
pringboot-example
/src/main/resources/application.properties
→
xxl-job-executor-s
amples/xxl-job-executor-sample-springboot
/src/main/resources/application.properties
浏览文件 @
85179937
...
...
@@ -9,7 +9,7 @@ logging.config=classpath:logback.xml
xxl.job.admin.addresses
=
http://127.0.0.1:8080/xxl-job-admin
### xxl-job executor address
xxl.job.executor.appname
=
xxl-job-executor-
ex
ample
xxl.job.executor.appname
=
xxl-job-executor-
s
ample
xxl.job.executor.ip
=
xxl.job.executor.port
=
9998
...
...
xxl-job-executor-s
pringboot-example
/src/main/resources/logback.xml
→
xxl-job-executor-s
amples/xxl-job-executor-sample-springboot
/src/main/resources/logback.xml
浏览文件 @
85179937
...
...
@@ -2,7 +2,7 @@
<configuration
debug=
"false"
scan=
"true"
scanPeriod=
"1 seconds"
>
<contextName>
logback
</contextName>
<property
name=
"log.path"
value=
"/data/applogs/xxl-job/xxl-job-executor-
example
.log"
/>
<property
name=
"log.path"
value=
"/data/applogs/xxl-job/xxl-job-executor-
sample-springboot
.log"
/>
<appender
name=
"console"
class=
"ch.qos.logback.core.ConsoleAppender"
>
<!-- <filter class="ch.qos.logback.classic.filter.ThresholdFilter" >
...
...
xxl-job-executor-s
pringboot-example
/src/test/java/com/xxl/job/executor/test/XxlJobExecutorExampleBootApplicationTests.java
→
xxl-job-executor-s
amples/xxl-job-executor-sample-springboot
/src/test/java/com/xxl/job/executor/test/XxlJobExecutorExampleBootApplicationTests.java
浏览文件 @
85179937
文件已移动
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录