Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
LFFZC
xxl-job
提交
0b4849bb
X
xxl-job
项目概览
LFFZC
/
xxl-job
与 Fork 源项目一致
从无法访问的项目Fork
通知
3
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,发现更多精彩内容 >>
提交
0b4849bb
编写于
8月 26, 2017
作者:
许雪里
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
执行器手动设置IP时将会绑定Host;
执行器回调线程优化,线程销毁前批量回调队列中所有数据;
上级
3fbe4890
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
70 addition
and
31 deletion
+70
-31
doc/XXL-JOB官方文档.md
doc/XXL-JOB官方文档.md
+6
-4
xxl-job-admin/src/main/webapp/static/js/index.js
xxl-job-admin/src/main/webapp/static/js/index.js
+1
-1
xxl-job-core/src/main/java/com/xxl/job/core/rpc/netcom/jetty/server/JettyServer.java
...com/xxl/job/core/rpc/netcom/jetty/server/JettyServer.java
+3
-0
xxl-job-core/src/main/java/com/xxl/job/core/thread/ExecutorRegistryThread.java
.../java/com/xxl/job/core/thread/ExecutorRegistryThread.java
+5
-1
xxl-job-core/src/main/java/com/xxl/job/core/thread/TriggerCallbackThread.java
...n/java/com/xxl/job/core/thread/TriggerCallbackThread.java
+55
-25
未找到文件。
doc/XXL-JOB官方文档.md
浏览文件 @
0b4849bb
...
@@ -238,7 +238,7 @@ XXL-JOB是一个轻量级分布式任务调度框架,其核心设计目标是
...
@@ -238,7 +238,7 @@ XXL-JOB是一个轻量级分布式任务调度框架,其核心设计目标是
### xxl-job admin address list:调度中心部署跟地址:如调度中心集群部署存在多个地址则用逗号分隔。执行器将会使用该地址进行"执行器心跳注册"和"任务结果回调"。
### xxl-job admin address list:调度中心部署跟地址:如调度中心集群部署存在多个地址则用逗号分隔。执行器将会使用该地址进行"执行器心跳注册"和"任务结果回调"。
xxl.job.admin.addresses=http://127.0.0.1:8080/xxl-job-admin
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 address:执行器"AppName"和地址信息配置:AppName执行器心跳注册分组依据;地址信息用于"调度中心请求并触发任务"和"执行器注册"。执行器默认端口为9999,执行器IP默认为空表示自动获取IP,多网卡时可手动设置指定IP
,手动设置IP时将会绑定Host
。单机部署多个执行器时,注意要配置不同执行器端口;
xxl.job.executor.appname=xxl-job-executor-sample
xxl.job.executor.appname=xxl-job-executor-sample
xxl.job.executor.ip=
xxl.job.executor.ip=
xxl.job.executor.port=9999
xxl.job.executor.port=9999
...
@@ -984,6 +984,9 @@ Tips: 历史版本(V1.3.x)目前已经Release至稳定版本, 进入维护阶段
...
@@ -984,6 +984,9 @@ Tips: 历史版本(V1.3.x)目前已经Release至稳定版本, 进入维护阶段
-
1、解决执行器回调URL不支持配置HTTPS时问题;
-
1、解决执行器回调URL不支持配置HTTPS时问题;
-
2、规范项目目录,方便扩展多执行器;
-
2、规范项目目录,方便扩展多执行器;
-
3、新增JFinal类型执行器sample示例项目;
-
3、新增JFinal类型执行器sample示例项目;
-
4、执行器手动设置IP时将会绑定Host;
-
5、项目主页搭建,提供中英文文档;
-
6、执行器回调线程优化,线程销毁前批量回调队列中所有数据;
### TODO LIST
### TODO LIST
-
1、任务权限管理:执行器为粒度分配权限,核心操作校验权限;
-
1、任务权限管理:执行器为粒度分配权限,核心操作校验权限;
...
@@ -994,11 +997,10 @@ Tips: 历史版本(V1.3.x)目前已经Release至稳定版本, 进入维护阶段
...
@@ -994,11 +997,10 @@ Tips: 历史版本(V1.3.x)目前已经Release至稳定版本, 进入维护阶段
-
6、调度任务优先级;
-
6、调度任务优先级;
-
7、移除quartz依赖,重写调度模块:新增或恢复任务时将下次执行记录插入delayqueue,调度中心集群竞争分布式锁,成功节点批量加载到期delayqueue数据,批量执行。
-
7、移除quartz依赖,重写调度模块:新增或恢复任务时将下次执行记录插入delayqueue,调度中心集群竞争分布式锁,成功节点批量加载到期delayqueue数据,批量执行。
-
8、springboot 和 docker镜像,并且推送docker镜像到中央仓库,更进一步实现产品开箱即用;
-
8、springboot 和 docker镜像,并且推送docker镜像到中央仓库,更进一步实现产品开箱即用;
-
9、国际化:调度中心界面
+ 官方文档,新增英文版本
。
-
9、国际化:调度中心界面。
-
10、执行器摘除:执行器销毁时,主动通知调度中心并摘除对应执行器节点,提高执行器状态感知的时效性。
-
10、执行器摘除:执行器销毁时,主动通知调度中心并摘除对应执行器节点,提高执行器状态感知的时效性。
-
11、调度中心API服务:支持API方式触发任务执行;
-
11、调度中心API服务:支持API方式触发任务执行;
-
12、执行器启动,设定IP的时候,主动绑定IP,避免攻击;
-
12、任务参数类型改为string,进一步方便参数传递;
-
13、任务参数类型改为string,进一步方便参数传递;
## 七、其他
## 七、其他
...
...
xxl-job-admin/src/main/webapp/static/js/index.js
浏览文件 @
0b4849bb
...
@@ -122,7 +122,7 @@ $(function () {
...
@@ -122,7 +122,7 @@ $(function () {
},
},
series
:
[
series
:
[
{
{
name
:
'
访问来源
'
,
name
:
'
分布比例
'
,
type
:
'
pie
'
,
type
:
'
pie
'
,
radius
:
'
55%
'
,
radius
:
'
55%
'
,
center
:
[
'
50%
'
,
'
60%
'
],
center
:
[
'
50%
'
,
'
60%
'
],
...
...
xxl-job-core/src/main/java/com/xxl/job/core/rpc/netcom/jetty/server/JettyServer.java
浏览文件 @
0b4849bb
...
@@ -30,6 +30,9 @@ public class JettyServer {
...
@@ -30,6 +30,9 @@ public class JettyServer {
// HTTP connector
// HTTP connector
ServerConnector
connector
=
new
ServerConnector
(
server
);
ServerConnector
connector
=
new
ServerConnector
(
server
);
if
(
ip
!=
null
&&
ip
.
trim
().
length
()>
0
)
{
connector
.
setHost
(
ip
);
// The network interface this connector binds to as an IP address or a hostname. If null or 0.0.0.0, then bind to all interfaces.
}
connector
.
setPort
(
port
);
connector
.
setPort
(
port
);
server
.
setConnectors
(
new
Connector
[]{
connector
});
server
.
setConnectors
(
new
Connector
[]{
connector
});
...
...
xxl-job-core/src/main/java/com/xxl/job/core/thread/ExecutorRegistryThread.java
浏览文件 @
0b4849bb
...
@@ -23,7 +23,7 @@ public class ExecutorRegistryThread extends Thread {
...
@@ -23,7 +23,7 @@ public class ExecutorRegistryThread extends Thread {
}
}
private
Thread
registryThread
;
private
Thread
registryThread
;
private
boolean
toStop
=
false
;
private
volatile
boolean
toStop
=
false
;
public
void
start
(
final
int
port
,
final
String
ip
,
final
String
appName
){
public
void
start
(
final
int
port
,
final
String
ip
,
final
String
appName
){
// valid
// valid
...
@@ -75,6 +75,10 @@ public class ExecutorRegistryThread extends Thread {
...
@@ -75,6 +75,10 @@ public class ExecutorRegistryThread extends Thread {
logger
.
error
(
e
.
getMessage
(),
e
);
logger
.
error
(
e
.
getMessage
(),
e
);
}
}
}
}
// registry remove
}
}
});
});
registryThread
.
setDaemon
(
true
);
registryThread
.
setDaemon
(
true
);
...
...
xxl-job-core/src/main/java/com/xxl/job/core/thread/TriggerCallbackThread.java
浏览文件 @
0b4849bb
...
@@ -22,15 +22,34 @@ public class TriggerCallbackThread {
...
@@ -22,15 +22,34 @@ public class TriggerCallbackThread {
return
instance
;
return
instance
;
}
}
/**
* job results callback queue
*/
private
LinkedBlockingQueue
<
HandleCallbackParam
>
callBackQueue
=
new
LinkedBlockingQueue
<
HandleCallbackParam
>();
private
LinkedBlockingQueue
<
HandleCallbackParam
>
callBackQueue
=
new
LinkedBlockingQueue
<
HandleCallbackParam
>();
public
static
void
pushCallBack
(
HandleCallbackParam
callback
){
getInstance
().
callBackQueue
.
add
(
callback
);
logger
.
debug
(
">>>>>>>>>>> xxl-job, push callback request, logId:{}"
,
callback
.
getLogId
());
}
/**
* callback thread
*/
private
Thread
triggerCallbackThread
;
private
Thread
triggerCallbackThread
;
private
boolean
toStop
=
false
;
private
volatile
boolean
toStop
=
false
;
public
void
start
()
{
public
void
start
()
{
// valid
if
(
XxlJobExecutor
.
getAdminBizList
()
==
null
)
{
logger
.
warn
(
">>>>>>>>>>>> xxl-job, executor callback config fail, adminAddresses is null."
);
return
;
}
triggerCallbackThread
=
new
Thread
(
new
Runnable
()
{
triggerCallbackThread
=
new
Thread
(
new
Runnable
()
{
@Override
@Override
public
void
run
()
{
public
void
run
()
{
// normal callback
while
(!
toStop
){
while
(!
toStop
){
try
{
try
{
HandleCallbackParam
callback
=
getInstance
().
callBackQueue
.
take
();
HandleCallbackParam
callback
=
getInstance
().
callBackQueue
.
take
();
...
@@ -41,34 +60,27 @@ public class TriggerCallbackThread {
...
@@ -41,34 +60,27 @@ public class TriggerCallbackThread {
int
drainToNum
=
getInstance
().
callBackQueue
.
drainTo
(
callbackParamList
);
int
drainToNum
=
getInstance
().
callBackQueue
.
drainTo
(
callbackParamList
);
callbackParamList
.
add
(
callback
);
callbackParamList
.
add
(
callback
);
// valid
if
(
XxlJobExecutor
.
getAdminBizList
()==
null
)
{
logger
.
warn
(
">>>>>>>>>>>> xxl-job callback fail, adminAddresses is null, callbackParamList:{}"
,
callbackParamList
);
continue
;
}
// callback, will retry if error
// callback, will retry if error
for
(
AdminBiz
adminBiz:
XxlJobExecutor
.
getAdminBizList
())
{
if
(
callbackParamList
!=
null
&&
callbackParamList
.
size
()>
0
)
{
try
{
doCallback
(
callbackParamList
);
ReturnT
<
String
>
callbackResult
=
adminBiz
.
callback
(
callbackParamList
);
if
(
callbackResult
!=
null
&&
ReturnT
.
SUCCESS_CODE
==
callbackResult
.
getCode
())
{
callbackResult
=
ReturnT
.
SUCCESS
;
logger
.
info
(
">>>>>>>>>>> xxl-job callback success, callbackParamList:{}, callbackResult:{}"
,
new
Object
[]{
callbackParamList
,
callbackResult
});
break
;
}
else
{
logger
.
info
(
">>>>>>>>>>> xxl-job callback fail, callbackParamList:{}, callbackResult:{}"
,
new
Object
[]{
callbackParamList
,
callbackResult
});
}
}
catch
(
Exception
e
)
{
logger
.
error
(
">>>>>>>>>>> xxl-job callback error, callbackParamList:{}"
,
callbackParamList
,
e
);
//getInstance().callBackQueue.addAll(callbackParamList);
}
}
}
}
}
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
logger
.
error
(
e
.
getMessage
(),
e
);
logger
.
error
(
e
.
getMessage
(),
e
);
}
}
}
}
// last callback
try
{
List
<
HandleCallbackParam
>
callbackParamList
=
new
ArrayList
<
HandleCallbackParam
>();
int
drainToNum
=
getInstance
().
callBackQueue
.
drainTo
(
callbackParamList
);
if
(
callbackParamList
!=
null
&&
callbackParamList
.
size
()>
0
)
{
doCallback
(
callbackParamList
);
}
}
catch
(
Exception
e
)
{
logger
.
error
(
e
.
getMessage
(),
e
);
}
}
}
});
});
triggerCallbackThread
.
setDaemon
(
true
);
triggerCallbackThread
.
setDaemon
(
true
);
...
@@ -78,9 +90,27 @@ public class TriggerCallbackThread {
...
@@ -78,9 +90,27 @@ public class TriggerCallbackThread {
toStop
=
true
;
toStop
=
true
;
}
}
public
static
void
pushCallBack
(
HandleCallbackParam
callback
){
/**
getInstance
().
callBackQueue
.
add
(
callback
);
* do callback, will retry if error
logger
.
debug
(
">>>>>>>>>>> xxl-job, push callback request, logId:{}"
,
callback
.
getLogId
());
* @param callbackParamList
*/
private
void
doCallback
(
List
<
HandleCallbackParam
>
callbackParamList
){
// callback, will retry if error
for
(
AdminBiz
adminBiz:
XxlJobExecutor
.
getAdminBizList
())
{
try
{
ReturnT
<
String
>
callbackResult
=
adminBiz
.
callback
(
callbackParamList
);
if
(
callbackResult
!=
null
&&
ReturnT
.
SUCCESS_CODE
==
callbackResult
.
getCode
())
{
callbackResult
=
ReturnT
.
SUCCESS
;
logger
.
info
(
">>>>>>>>>>> xxl-job callback success, callbackParamList:{}, callbackResult:{}"
,
new
Object
[]{
callbackParamList
,
callbackResult
});
break
;
}
else
{
logger
.
info
(
">>>>>>>>>>> xxl-job callback fail, callbackParamList:{}, callbackResult:{}"
,
new
Object
[]{
callbackParamList
,
callbackResult
});
}
}
catch
(
Exception
e
)
{
logger
.
error
(
">>>>>>>>>>> xxl-job callback error, callbackParamList:{}"
,
callbackParamList
,
e
);
//getInstance().callBackQueue.addAll(callbackParamList);
}
}
}
}
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录