Skip to content
项目
群组
代码片段
帮助
正在加载...
登录
切换导航
X
XXL-JOB
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分枝图
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
分枝图
统计图
创建新议题
作业
提交
议题看板
打开侧边栏
靳帅
XXL-JOB
Commits
79f9317f
提交
79f9317f
authored
3月 02, 2017
作者:
xueli.xue
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
底层线程模型统一;destory逻辑优化;
上级
b8e19660
隐藏空白字符变更
内嵌
并排
正在显示
7 个修改的文件
包含
105 行增加
和
55 行删除
+105
-55
XxlJobDynamicScheduler.java
...m/xxl/job/admin/core/schedule/XxlJobDynamicScheduler.java
+2
-2
JobMonitorHelper.java
.../java/com/xxl/job/admin/core/thread/JobMonitorHelper.java
+2
-2
JobRegistryHelper.java
...java/com/xxl/job/admin/core/thread/JobRegistryHelper.java
+1
-1
XxlJobExecutor.java
...c/main/java/com/xxl/job/core/executor/XxlJobExecutor.java
+26
-1
JettyServer.java
...com/xxl/job/core/rpc/netcom/jetty/server/JettyServer.java
+7
-42
ExecutorRegistryThread.java
.../java/com/xxl/job/core/thread/ExecutorRegistryThread.java
+45
-0
TriggerCallbackThread.java
...n/java/com/xxl/job/core/thread/TriggerCallbackThread.java
+22
-7
没有找到文件。
xxl-job-admin/src/main/java/com/xxl/job/admin/core/schedule/XxlJobDynamicScheduler.java
浏览文件 @
79f9317f
...
...
@@ -78,10 +78,10 @@ public final class XxlJobDynamicScheduler implements ApplicationContextAware, In
// destroy
public
void
destroy
(){
// admin registry stop
JobRegistryHelper
.
getInstance
().
s
top
();
JobRegistryHelper
.
getInstance
().
toS
top
();
// admin monitor stop
JobMonitorHelper
.
getInstance
().
s
top
();
JobMonitorHelper
.
getInstance
().
toS
top
();
serverFactory
.
destroy
();
}
...
...
xxl-job-admin/src/main/java/com/xxl/job/admin/core/thread/JobMonitorHelper.java
浏览文件 @
79f9317f
...
...
@@ -36,7 +36,7 @@ public class JobMonitorHelper {
@Override
public
void
run
()
{
while
(
true
)
{
while
(
!
toStop
)
{
try
{
logger
.
debug
(
">>>>>>>>>>> job monitor beat ... "
);
Integer
jobLogId
=
JobMonitorHelper
.
instance
.
queue
.
take
();
...
...
@@ -81,7 +81,7 @@ public class JobMonitorHelper {
monitorThread
.
start
();
}
public
void
s
top
(){
public
void
toS
top
(){
toStop
=
true
;
//monitorThread.interrupt();
}
...
...
xxl-job-admin/src/main/java/com/xxl/job/admin/core/thread/JobRegistryHelper.java
浏览文件 @
79f9317f
...
...
@@ -70,7 +70,7 @@ public class JobRegistryHelper {
registryThread
.
start
();
}
public
void
s
top
(){
public
void
toS
top
(){
toStop
=
true
;
//registryThread.interrupt();
}
...
...
xxl-job-core/src/main/java/com/xxl/job/core/executor/XxlJobExecutor.java
浏览文件 @
79f9317f
...
...
@@ -6,7 +6,9 @@ import com.xxl.job.core.handler.IJobHandler;
import
com.xxl.job.core.handler.annotation.JobHander
;
import
com.xxl.job.core.registry.RegistHelper
;
import
com.xxl.job.core.rpc.netcom.NetComServerFactory
;
import
com.xxl.job.core.thread.ExecutorRegistryThread
;
import
com.xxl.job.core.thread.JobThread
;
import
com.xxl.job.core.thread.TriggerCallbackThread
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.BeansException
;
...
...
@@ -46,11 +48,33 @@ public class XxlJobExecutor implements ApplicationContextAware, ApplicationListe
// ---------------------------------- job server ------------------------------------
private
NetComServerFactory
serverFactory
=
new
NetComServerFactory
();
public
void
start
()
throws
Exception
{
// executor start
NetComServerFactory
.
putService
(
ExecutorBiz
.
class
,
new
ExecutorBizImpl
());
serverFactory
.
start
(
port
,
ip
,
appName
,
registHelper
);
// trigger callback thread start
TriggerCallbackThread
.
getInstance
().
start
();
}
public
void
destroy
(){
// executor stop
serverFactory
.
destroy
();
// job thread repository destory
if
(
JobThreadRepository
.
size
()
>
0
)
{
for
(
Map
.
Entry
<
String
,
JobThread
>
item:
JobThreadRepository
.
entrySet
())
{
JobThread
jobThread
=
item
.
getValue
();
jobThread
.
toStop
(
"Web容器销毁终止"
);
jobThread
.
interrupt
();
}
JobThreadRepository
.
clear
();
}
// trigger callback thread stop
TriggerCallbackThread
.
getInstance
().
toStop
();
// executor registry thread stop
ExecutorRegistryThread
.
getInstance
().
toStop
();
}
// ---------------------------------- init job handler ------------------------------------
...
...
@@ -99,7 +123,8 @@ public class XxlJobExecutor implements ApplicationContextAware, ApplicationListe
return
jobThread
;
}
public
static
JobThread
loadJobThread
(
String
jobKey
){
return
JobThreadRepository
.
get
(
jobKey
);
JobThread
jobThread
=
JobThreadRepository
.
get
(
jobKey
);
return
jobThread
;
}
public
static
void
removeJobThread
(
String
jobKey
){
JobThreadRepository
.
remove
(
jobKey
);
...
...
xxl-job-core/src/main/java/com/xxl/job/core/rpc/netcom/jetty/server/JettyServer.java
浏览文件 @
79f9317f
package
com
.
xxl
.
job
.
core
.
rpc
.
netcom
.
jetty
.
server
;
import
com.xxl.job.core.registry.RegistHelper
;
import
com.xxl.job.core.
util.IpUtil
;
import
com.xxl.job.core.
thread.ExecutorRegistryThread
;
import
org.eclipse.jetty.server.Connector
;
import
org.eclipse.jetty.server.Handler
;
import
org.eclipse.jetty.server.Server
;
...
...
@@ -11,8 +11,6 @@ import org.eclipse.jetty.util.thread.ExecutorThreadPool;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
java.util.concurrent.TimeUnit
;
/**
* rpc jetty server
* @author xuxueli 2015-11-19 22:29:03
...
...
@@ -21,9 +19,9 @@ public class JettyServer {
private
static
final
Logger
logger
=
LoggerFactory
.
getLogger
(
JettyServer
.
class
);
private
Server
server
;
private
Thread
thread
;
public
void
start
(
final
int
port
,
final
String
ip
,
final
String
appName
,
final
RegistHelper
registHelper
)
throws
Exception
{
Thread
thread
=
new
Thread
(
new
Runnable
()
{
thread
=
new
Thread
(
new
Runnable
()
{
@Override
public
void
run
()
{
server
=
new
Server
();
...
...
@@ -43,7 +41,7 @@ public class JettyServer {
try
{
server
.
start
();
logger
.
info
(
">>>>>>>>>>>> xxl-job jetty server start success at port:{}."
,
port
);
executorRegistryBea
t
(
port
,
ip
,
appName
,
registHelper
);
ExecutorRegistryThread
.
getInstance
().
star
t
(
port
,
ip
,
appName
,
registHelper
);
server
.
join
();
// block until thread stopped
logger
.
info
(
">>>>>>>>>>> xxl-rpc server start success, netcon={}, port={}"
,
JettyServer
.
class
.
getName
(),
port
);
}
catch
(
Exception
e
)
{
...
...
@@ -65,43 +63,10 @@ public class JettyServer {
logger
.
error
(
""
,
e
);
}
}
logger
.
info
(
">>>>>>>>>>> xxl-rpc server destroy success, netcon={}"
,
JettyServer
.
class
.
getName
());
}
/**
* registry beat
* @param port
* @param ip
* @param appName
* @param registHelper
*/
private
void
executorRegistryBeat
(
final
int
port
,
final
String
ip
,
final
String
appName
,
final
RegistHelper
registHelper
){
if
(
registHelper
==
null
&&
appName
==
null
||
appName
.
trim
().
length
()==
0
)
{
return
;
if
(
thread
.
isAlive
())
{
thread
.
interrupt
();
}
Thread
registryThread
=
new
Thread
(
new
Runnable
()
{
@Override
public
void
run
()
{
while
(
true
)
{
try
{
// generate addredd = ip:port
String
address
=
null
;
if
(
ip
!=
null
&&
ip
.
trim
().
length
()>
0
)
{
address
=
ip
.
trim
().
concat
(
":"
).
concat
(
String
.
valueOf
(
port
));
}
else
{
address
=
IpUtil
.
getIpPort
(
port
);
}
registHelper
.
registry
(
RegistHelper
.
RegistType
.
EXECUTOR
.
name
(),
appName
,
address
);
TimeUnit
.
SECONDS
.
sleep
(
RegistHelper
.
TIMEOUT
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
}
}
});
registryThread
.
setDaemon
(
true
);
registryThread
.
start
();
logger
.
info
(
">>>>>>>>>>> xxl-rpc server destroy success, netcon={}"
,
JettyServer
.
class
.
getName
());
}
}
xxl-job-core/src/main/java/com/xxl/job/core/thread/ExecutorRegistryThread.java
浏览文件 @
79f9317f
package
com
.
xxl
.
job
.
core
.
thread
;
import
com.xxl.job.core.registry.RegistHelper
;
import
com.xxl.job.core.util.IpUtil
;
import
java.util.concurrent.TimeUnit
;
/**
* Created by xuxueli on 17/3/2.
*/
public
class
ExecutorRegistryThread
extends
Thread
{
private
static
ExecutorRegistryThread
instance
=
new
ExecutorRegistryThread
();
public
static
ExecutorRegistryThread
getInstance
(){
return
instance
;
}
private
Thread
registryThread
;
private
boolean
toStop
=
false
;
public
void
start
(
final
int
port
,
final
String
ip
,
final
String
appName
,
final
RegistHelper
registHelper
){
if
(
registHelper
==
null
&&
appName
==
null
||
appName
.
trim
().
length
()==
0
)
{
return
;
}
registryThread
=
new
Thread
(
new
Runnable
()
{
@Override
public
void
run
()
{
while
(!
toStop
)
{
try
{
// generate addredd = ip:port
String
address
=
null
;
if
(
ip
!=
null
&&
ip
.
trim
().
length
()>
0
)
{
address
=
ip
.
trim
().
concat
(
":"
).
concat
(
String
.
valueOf
(
port
));
}
else
{
address
=
IpUtil
.
getIpPort
(
port
);
}
registHelper
.
registry
(
RegistHelper
.
RegistType
.
EXECUTOR
.
name
(),
appName
,
address
);
TimeUnit
.
SECONDS
.
sleep
(
RegistHelper
.
TIMEOUT
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
}
}
});
registryThread
.
setDaemon
(
true
);
registryThread
.
start
();
}
public
void
toStop
()
{
toStop
=
true
;
}
}
xxl-job-core/src/main/java/com/xxl/job/core/thread/TriggerCallbackThread.java
浏览文件 @
79f9317f
...
...
@@ -15,14 +15,23 @@ import java.util.concurrent.LinkedBlockingQueue;
public
class
TriggerCallbackThread
{
private
static
Logger
logger
=
LoggerFactory
.
getLogger
(
TriggerCallbackThread
.
class
);
private
static
LinkedBlockingQueue
<
HandleCallbackParam
>
callBackQueue
=
new
LinkedBlockingQueue
<
HandleCallbackParam
>();
static
{
new
Thread
(
new
Runnable
()
{
private
static
TriggerCallbackThread
instance
=
new
TriggerCallbackThread
();
public
static
TriggerCallbackThread
getInstance
(){
return
instance
;
}
private
LinkedBlockingQueue
<
HandleCallbackParam
>
callBackQueue
=
new
LinkedBlockingQueue
<
HandleCallbackParam
>();
private
Thread
triggerCallbackThread
;
private
boolean
toStop
=
false
;
public
void
start
()
{
triggerCallbackThread
=
new
Thread
(
new
Runnable
()
{
@Override
public
void
run
()
{
while
(
true
){
while
(
!
toStop
){
try
{
HandleCallbackParam
callback
=
callBackQueue
.
take
();
HandleCallbackParam
callback
=
getInstance
().
callBackQueue
.
take
();
if
(
callback
!=
null
)
{
for
(
String
address
:
callback
.
getLogAddress
())
{
try
{
...
...
@@ -44,10 +53,16 @@ public class TriggerCallbackThread {
}
}
}
}).
start
();
});
triggerCallbackThread
.
setDaemon
(
true
);
triggerCallbackThread
.
start
();
}
public
void
toStop
(){
toStop
=
true
;
}
public
static
void
pushCallBack
(
HandleCallbackParam
callback
){
callBackQueue
.
add
(
callback
);
getInstance
().
callBackQueue
.
add
(
callback
);
logger
.
debug
(
">>>>>>>>>>> xxl-job, push callback request, logId:{}"
,
callback
.
getLogId
());
}
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论