Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
熊鹏飞
/
xxljob220
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Snippets
Settings
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
8360707b
authored
Apr 13, 2020
by
xuxueli
Browse files
Options
_('Browse Files')
Download
Email Patches
Plain Diff
biz thread pool
parent
71a1dbd8
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
36 additions
and
9 deletions
xxl-job-core/src/main/java/com/xxl/job/core/server/EmbedServer.java
xxl-job-core/src/main/java/com/xxl/job/core/server/EmbedServer.java
View file @
8360707b
...
@@ -20,7 +20,7 @@ import io.netty.util.CharsetUtil;
...
@@ -20,7 +20,7 @@ import io.netty.util.CharsetUtil;
import
org.slf4j.Logger
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.slf4j.LoggerFactory
;
import
java.util.concurrent.
TimeUnit
;
import
java.util.concurrent.
*
;
/**
/**
* Copy from : https://github.com/xuxueli/xxl-rpc
* Copy from : https://github.com/xuxueli/xxl-rpc
...
@@ -43,6 +43,25 @@ public class EmbedServer {
...
@@ -43,6 +43,25 @@ public class EmbedServer {
// param
// param
EventLoopGroup
bossGroup
=
new
NioEventLoopGroup
();
EventLoopGroup
bossGroup
=
new
NioEventLoopGroup
();
EventLoopGroup
workerGroup
=
new
NioEventLoopGroup
();
EventLoopGroup
workerGroup
=
new
NioEventLoopGroup
();
ThreadPoolExecutor
bizThreadPool
=
new
ThreadPoolExecutor
(
0
,
200
,
60L
,
TimeUnit
.
SECONDS
,
new
LinkedBlockingQueue
<
Runnable
>(
2000
),
new
ThreadFactory
()
{
@Override
public
Thread
newThread
(
Runnable
r
)
{
return
new
Thread
(
r
,
"xxl-rpc, EmbedServer bizThreadPool-"
+
r
.
hashCode
());
}
},
new
RejectedExecutionHandler
()
{
@Override
public
void
rejectedExecution
(
Runnable
r
,
ThreadPoolExecutor
executor
)
{
throw
new
RuntimeException
(
"xxl-job, EmbedServer bizThreadPool is EXHAUSTED!"
);
}
});
try
{
try
{
// start server
// start server
...
@@ -56,7 +75,7 @@ public class EmbedServer {
...
@@ -56,7 +75,7 @@ public class EmbedServer {
.
addLast
(
new
IdleStateHandler
(
0
,
0
,
30
*
3
,
TimeUnit
.
SECONDS
))
// beat 3N, close if idle
.
addLast
(
new
IdleStateHandler
(
0
,
0
,
30
*
3
,
TimeUnit
.
SECONDS
))
// beat 3N, close if idle
.
addLast
(
new
HttpServerCodec
())
.
addLast
(
new
HttpServerCodec
())
.
addLast
(
new
HttpObjectAggregator
(
5
*
1024
*
1024
))
// merge request & reponse to FULL
.
addLast
(
new
HttpObjectAggregator
(
5
*
1024
*
1024
))
// merge request & reponse to FULL
.
addLast
(
new
EmbedHttpServerHandler
(
executorBiz
,
accessToken
));
.
addLast
(
new
EmbedHttpServerHandler
(
executorBiz
,
accessToken
,
bizThreadPool
));
}
}
})
})
.
childOption
(
ChannelOption
.
SO_KEEPALIVE
,
true
);
.
childOption
(
ChannelOption
.
SO_KEEPALIVE
,
true
);
...
@@ -121,9 +140,11 @@ public class EmbedServer {
...
@@ -121,9 +140,11 @@ public class EmbedServer {
private
ExecutorBiz
executorBiz
;
private
ExecutorBiz
executorBiz
;
private
String
accessToken
;
private
String
accessToken
;
public
EmbedHttpServerHandler
(
ExecutorBiz
executorBiz
,
String
accessToken
)
{
private
ThreadPoolExecutor
bizThreadPool
;
public
EmbedHttpServerHandler
(
ExecutorBiz
executorBiz
,
String
accessToken
,
ThreadPoolExecutor
bizThreadPool
)
{
this
.
executorBiz
=
executorBiz
;
this
.
executorBiz
=
executorBiz
;
this
.
accessToken
=
accessToken
;
this
.
accessToken
=
accessToken
;
this
.
bizThreadPool
=
bizThreadPool
;
}
}
@Override
@Override
...
@@ -137,14 +158,20 @@ public class EmbedServer {
...
@@ -137,14 +158,20 @@ public class EmbedServer {
boolean
keepAlive
=
HttpUtil
.
isKeepAlive
(
msg
);
boolean
keepAlive
=
HttpUtil
.
isKeepAlive
(
msg
);
String
accessTokenReq
=
msg
.
headers
().
get
(
XxlJobRemotingUtil
.
XXL_JOB_ACCESS_TOKEN
);
String
accessTokenReq
=
msg
.
headers
().
get
(
XxlJobRemotingUtil
.
XXL_JOB_ACCESS_TOKEN
);
// do invoke
// invoke
Object
responseObj
=
process
(
httpMethod
,
uri
,
requestData
,
accessTokenReq
);
bizThreadPool
.
execute
(
new
Runnable
()
{
@Override
public
void
run
()
{
// do invoke
Object
responseObj
=
process
(
httpMethod
,
uri
,
requestData
,
accessTokenReq
);
// to json
// to json
String
responseJson
=
GsonTool
.
toJson
(
responseObj
);
String
responseJson
=
GsonTool
.
toJson
(
responseObj
);
// write response
// write response
writeResponse
(
ctx
,
keepAlive
,
responseJson
);
writeResponse
(
ctx
,
keepAlive
,
responseJson
);
}
});
}
}
private
Object
process
(
HttpMethod
httpMethod
,
String
uri
,
String
requestData
,
String
accessTokenReq
)
{
private
Object
process
(
HttpMethod
httpMethod
,
String
uri
,
String
requestData
,
String
accessTokenReq
)
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment