biz thread pool
This commit is contained in:
parent
71a1dbd87a
commit
8360707bb9
|
@ -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 {
|
||||||
// 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 {
|
||||||
.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 {
|
||||||
|
|
||||||
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,6 +158,10 @@ 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);
|
||||||
|
|
||||||
|
// invoke
|
||||||
|
bizThreadPool.execute(new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
// do invoke
|
// do invoke
|
||||||
Object responseObj = process(httpMethod, uri, requestData, accessTokenReq);
|
Object responseObj = process(httpMethod, uri, requestData, accessTokenReq);
|
||||||
|
|
||||||
|
@ -146,6 +171,8 @@ public class EmbedServer {
|
||||||
// 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) {
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue