Skip to content
项目
群组
代码片段
帮助
正在加载...
登录
切换导航
X
XXL-JOB
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分枝图
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
分枝图
统计图
创建新议题
作业
提交
议题看板
打开侧边栏
靳帅
XXL-JOB
Commits
f93302a5
提交
f93302a5
authored
4月 27, 2017
作者:
xueli.xue
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
脚本任务,底层逻辑调整
上级
b7935a93
隐藏空白字符变更
内嵌
并排
正在显示
10 个修改的文件
包含
62 行增加
和
35 行删除
+62
-35
README.md
README.md
+28
-27
tables_xxl_job.sql
db/tables_xxl_job.sql
+1
-0
RemoteHttpJobBean.java
...ava/com/xxl/job/admin/core/jobbean/RemoteHttpJobBean.java
+1
-0
XxlJobLog.java
...src/main/java/com/xxl/job/admin/core/model/XxlJobLog.java
+11
-0
XxlJobLogMapper.xml
...min/src/main/resources/mybatis-mapper/XxlJobLogMapper.xml
+5
-1
common.macro.ftl
.../src/main/webapp/WEB-INF/template/common/common.macro.ftl
+1
-1
joblog.index.ftl
.../src/main/webapp/WEB-INF/template/joblog/joblog.index.ftl
+1
-1
jobinfo.index.1.js
xxl-job-admin/src/main/webapp/static/js/jobinfo.index.1.js
+1
-1
joblog.index.1.js
xxl-job-admin/src/main/webapp/static/js/joblog.index.1.js
+11
-2
applicationcontext-xxl-job.xml
...example/src/main/resources/applicationcontext-xxl-job.xml
+2
-2
没有找到文件。
README.md
浏览文件 @
f93302a5
...
...
@@ -24,7 +24,7 @@ XXL-JOB是一个轻量级分布式任务调度框架,其核心设计目标是
-
17、路由策略:执行器集群部署时提供丰富的路由策略,包括:第一个、最后一个、轮询、随机、一致性HASH、最不经常使用、最近最久未使用、故障转移;
-
18、Rolling日志:支持以Rolling方式实时查看执行器输出的日志信息,实时监控任务进度;
-
19、运行报表:支持实时查看运行数据,如任务数量、调度次数、执行器数量等;以及调度报表,如调度日期分布图,调度成功分布图等;
-
20、脚本任务:支持
开发脚本任务,如Shell、Python和Groovy等
脚本;
-
20、脚本任务:支持
以GLUE模式开发和运行脚本任务,包括Shell、Python等类型
脚本;
#### 1.3 发展
于2015年中,我在github上创建XXL-JOB项目仓库并提交第一个commit,随之进行系统结构设计,UI选型,交互设计……
...
...
@@ -57,6 +57,10 @@ XXL-JOB是一个轻量级分布式任务调度框架,其核心设计目标是
-
16、深圳麦亚信科技股份有限公司
-
17、上海博莹科技信息技术有限公司
-
18、中国平安科技有限公司
-
19、杭州知时信息科技有限公司
-
20、博莹科技(上海)有限公司
-
21、成都依能股份有限责任公司
-
22、湖南高阳通联信息技术有限公司
-
……
欢迎大家的关注和使用,XXL-JOB也将拥抱变化,持续发展。
...
...
@@ -167,7 +171,7 @@ XXL-JOB是一个轻量级分布式任务调度框架,其核心设计目标是

### 执行器JDBC链接:请保持和调度中心JDBC连接配置一致;(执行器 "DbRegistHelper"
和 "DbGlueLoader" 依赖JDBC配置; 推荐将其抽象为RPC远程服务, 可取消对JDBC的依赖
)
### 执行器JDBC链接:请保持和调度中心JDBC连接配置一致;(执行器 "DbRegistHelper"
依赖JDBC配置;推荐将其抽象为RPC远程服务, 可取消对JDBC的依赖;如不启用执行自动注册功能,也可忽略JDBC配置;
)
xxl.job.db.driverClass=com.mysql.jdbc.Driver
xxl.job.db.url=jdbc:mysql://localhost:3306/xxl-job?useUnicode=true&characterEncoding=UTF-8
xxl.job.db.user=root
...
...
@@ -181,51 +185,48 @@ XXL-JOB是一个轻量级分布式任务调度框架,其核心设计目标是
**组件配置**
:配置内容如下图所示。


1、JobHandler 扫描路径:自动扫描容器中JobHandler;
3、执行器注册器(XxlJobExecutor.registHelper): 默认使用系统提供的 "DbRegistHelper"(依赖JDBC), 推荐将其改为公共的RPC服务
3、GLUE源码加载器(GlueFactory.glueLoader): 默认使用系统提供的 "DbGlueLoader"(依赖JDBC), 推荐将其改为公共的RPC服务
4、XXL-JOB公共数据源 "xxlJobDataSource": 仅在启动 "DbRegistHelper" 或 "DbGlueLoader" 时才需要, 否则可删除
2、执行器注册器(XxlJobExecutor.registHelper): 默认使用系统提供的 "DbRegistHelper"(依赖JDBC), 推荐将其抽象为RPC远程服务, 可取消对JDBC的依赖;如不启用执行自动注册功能,也可忽略JDBC配置; )
3、XXL-JOB公共数据源 "xxlJobDataSource": 仅在启动 "DbRegistHelper" 或 "DbGlueLoader" 时才需要, 否则可删除
**部署项目**
:
至此“执行器”项目已经部署结束。
#### 2.5 开发第一个任务“Hello World”
本示例为新建一个“GLUE模式任务”(“GLUE模式任务”的执行代码支持托管到调度中心在线维护,相比“Bean模式任务”需要在执行器项目开发部署上线,更加简便轻量)。更多有关任务的详细配置,请查看“章节三:任务详解”。
本示例以新建一个 “GLUE模式(Java)” 运行模式的任务为例。更多有关任务的详细配置,请查看“章节三:任务详解”。
( “GLUE模式(Java)”的执行代码托管到调度中心在线维护,相比“Bean模式任务”需要在执行器项目开发部署上线,更加简便轻量)
**前提:请确认“调度中心”和“执行器”项目已经成功部署并启动;**
-
**步骤一
(新建任务)**
:
-
**步骤一
:新建任务**
:
登陆调度中心,点击下图所示“新建任务”按钮,新建示例任务。然后,参考下面截图中任务的参数配置,点击保存。


-
**步骤二(GLUE任务开发)**
:
请点击下图中所示“GLUE入口按钮”,进入“GLUE编辑器开发界面”,见下图。GLUE任务默认已经初始化了示例任务代码,即打印Hello World。
(GLUE实际上是一段继承自IJobHandler的Java类代码,它在执行器项目中运行,可使用@Resource/@Autowire注入执行器里中的其他服务,详细介绍请查看第三章节)




-
**步骤三(触发执行)**
:
点击下图所示“执行”按钮,可手动触发一次任务执行(通常情况下,通过配置Cron表达式进行任务调度出发)。
-
**步骤二:“GLUE模式(Java)” 任务开发**
:
请点击任务右侧 “GLUE” 按钮,进入 “GLUE编辑器开发界面” ,见下图。“GLUE模式(Java)” 运行模式的任务默认已经初始化了示例任务代码,即打印Hello World。
( “GLUE模式(Java)” 运行模式的任务实际上是一段继承自IJobHandler的Java类代码,它在执行器项目中运行,可使用@Resource/@Autowire注入执行器里中的其他服务,详细介绍请查看第三章节)


-
**步骤四(查看日志)**
:

点击任务右侧“日志”按钮,可前往任务日志界面查看任务日志。

-
**步骤三:触发执行**
:
请点击任务右侧 “执行” 按钮,可手动触发一次任务执行(通常情况下,通过配置Cron表达式进行任务调度出发)。
-
**步骤四:查看日志**
:
请点击任务右侧 “日志” 按钮,可前往任务日志界面查看任务日志。
在任务日志界面中,可查看该任务的历史调度记录以及每一次调度的任务调度信息、执行参数和执行信息。运行中的任务点击右侧的“执行日志”按钮,可进入日志控制台查看实时执行日志。


在日志控制台,可以Rolling方式实时查看任务在执行器一侧运行输出的日志信息,实时监控任务进度;


## 三、任务详解
...
...
@@ -785,7 +786,7 @@ Tips: 历史版本(V1.3.x)目前已经Release至稳定版本, 进入维护阶段
-
4、路由策越优化:循环和LFU路由策略计数器自增无上限问题和首次路由压力集中在首台机器的问题修复;
#### 6.14 版本 V1.7.0 特性 (Coding)
-
1、
支持脚本JOB(源码或指定路径), 即shell/python/php等, 日志实时输出并支持在线监控;定制JobHandler实现
;
-
1、
脚本任务:支持以GLUE模式开发和运行脚本任务,包括Shell、Python等类型脚本
;
#### TODO LIST
...
...
db/tables_xxl_job.sql
浏览文件 @
f93302a5
...
...
@@ -169,6 +169,7 @@ 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'
,
...
...
xxl-job-admin/src/main/java/com/xxl/job/admin/core/jobbean/RemoteHttpJobBean.java
浏览文件 @
f93302a5
...
...
@@ -50,6 +50,7 @@ public class RemoteHttpJobBean extends QuartzJobBean {
// log part-2 param
//jobLog.setExecutorAddress(executorAddress);
jobLog
.
setGlueType
(
jobInfo
.
getGlueType
());
jobLog
.
setExecutorHandler
(
jobInfo
.
getExecutorHandler
());
jobLog
.
setExecutorParam
(
jobInfo
.
getExecutorParam
());
jobLog
.
setTriggerTime
(
new
Date
());
...
...
xxl-job-admin/src/main/java/com/xxl/job/admin/core/model/XxlJobLog.java
浏览文件 @
f93302a5
...
...
@@ -14,6 +14,9 @@ public class XxlJobLog {
private
int
jobGroup
;
private
int
jobId
;
// glueType
private
String
glueType
;
// execute info
private
String
executorAddress
;
private
String
executorHandler
;
...
...
@@ -53,6 +56,14 @@ public class XxlJobLog {
this
.
jobId
=
jobId
;
}
public
String
getGlueType
()
{
return
glueType
;
}
public
void
setGlueType
(
String
glueType
)
{
this
.
glueType
=
glueType
;
}
public
String
getExecutorAddress
()
{
return
executorAddress
;
}
...
...
xxl-job-admin/src/main/resources/mybatis-mapper/XxlJobLogMapper.xml
浏览文件 @
f93302a5
...
...
@@ -9,7 +9,9 @@
<result
column=
"job_group"
property=
"jobGroup"
/>
<result
column=
"job_id"
property=
"jobId"
/>
<result
column=
"executor_address"
property=
"executorAddress"
/>
<result
column=
"glue_type"
property=
"glueType"
/>
<result
column=
"executor_address"
property=
"executorAddress"
/>
<result
column=
"executor_handler"
property=
"executorHandler"
/>
<result
column=
"executor_param"
property=
"executorParam"
/>
...
...
@@ -27,6 +29,7 @@
t.id,
t.job_group,
t.job_id,
t.glue_type,
t.executor_address,
t.executor_handler,
t.executor_param,
...
...
@@ -101,6 +104,7 @@
<update
id=
"updateTriggerInfo"
>
UPDATE XXL_JOB_QRTZ_TRIGGER_LOG
SET
`glue_type`= #{glueType},
`trigger_time`= #{triggerTime},
`trigger_code`= #{triggerCode},
`trigger_msg`= #{triggerMsg},
...
...
xxl-job-admin/src/main/webapp/WEB-INF/template/common/common.macro.ftl
浏览文件 @
f93302a5
...
...
@@ -170,7 +170,7 @@
<#macro commonFooter >
<footer class="main-footer">
Powered by <b>XXL-JOB</b> 1.
6
Powered by <b>XXL-JOB</b> 1.
7
<div class="pull-right hidden-xs">
<strong>Copyright © 2015-${.now?string('yyyy')}
<a href="https://github.com/xuxueli/xxl-job" target="_blank" >github</a>
...
...
xxl-job-admin/src/main/webapp/WEB-INF/template/joblog/joblog.index.ftl
浏览文件 @
f93302a5
...
...
@@ -81,7 +81,7 @@
<th
name=
"triggerCode"
>
调度结果
</th>
<th
name=
"triggerMsg"
>
调度备注
</th>
<th
name=
"executorAddress"
>
执行器地址
</th>
<th
name=
"
executorHandler"
>
JobHandler
</th>
<th
name=
"
glueType"
>
运行模式
</th>
<th
name=
"executorParam"
>
任务参数
</th>
<th
name=
"handleTime"
>
执行时间
</th>
<th
name=
"handleCode"
>
执行结果
</th>
...
...
xxl-job-admin/src/main/webapp/static/js/jobinfo.index.1.js
浏览文件 @
f93302a5
...
...
@@ -56,7 +56,7 @@ $(function() {
}
else
if
(
'GLUE_PYTHON'
==
row
.
glueType
)
{
return
"GLUE模式(Python)"
;
}
else
if
(
'BEAN'
==
row
.
glueType
)
{
return
row
.
executorHandler
;
return
"BEAN模式:"
+
row
.
executorHandler
;
}
return
row
.
executorHandler
;
}
...
...
xxl-job-admin/src/main/webapp/static/js/joblog.index.1.js
浏览文件 @
f93302a5
...
...
@@ -108,10 +108,19 @@ $(function() {
},
{
"data"
:
'executorAddress'
,
"visible"
:
true
},
{
"data"
:
'
executorHandler
'
,
"data"
:
'
glueType
'
,
"visible"
:
true
,
"render"
:
function
(
data
,
type
,
row
)
{
return
(
row
.
executorHandler
)?
row
.
executorHandler
:
"GLUE模式"
;
if
(
'GLUE_GROOVY'
==
row
.
glueType
)
{
return
"GLUE模式(Java)"
;
}
else
if
(
'GLUE_SHELL'
==
row
.
glueType
)
{
return
"GLUE模式(Shell)"
;
}
else
if
(
'GLUE_PYTHON'
==
row
.
glueType
)
{
return
"GLUE模式(Python)"
;
}
else
if
(
'BEAN'
==
row
.
glueType
)
{
return
"BEAN模式:"
+
row
.
executorHandler
;
}
return
row
.
executorHandler
;
}
},
{
"data"
:
'executorParam'
,
"visible"
:
true
},
...
...
xxl-job-executor-example/src/main/resources/applicationcontext-xxl-job.xml
浏览文件 @
f93302a5
...
...
@@ -28,9 +28,9 @@
<!-- 执行器端口号 -->
<property
name=
"port"
value=
"${xxl.job.executor.port}"
/>
<property
name=
"appName"
value=
"${xxl.job.executor.appname}"
/>
<!-- 执行器注册器
,默认使用系统提供的 "DbRegistHelper", 推荐将其改为公共的RPC服务
-->
<!-- 执行器注册器 -->
<property
name=
"registHelper"
>
<!--
DbRegistHelper, 依赖 "XXL-JOB公共数据源"
-->
<!--
执行器 "DbRegistHelper" 依赖 "XXL-JOB公共数据源" ;推荐将其抽象为RPC远程服务, 可取消对JDBC的依赖;如不启用执行自动注册功能,也可忽略JDBC配置;
-->
<bean
class=
"com.xxl.job.core.registry.impl.DbRegistHelper"
>
<!-- XXL-JOB公共数据源 -->
<property
name=
"dataSource"
ref=
"xxlJobDataSource"
/>
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论