🎨 #2583 【企业微信】增加路由线程池关闭的方法,当通过http优雅关闭时需要调用,否则java进程不会结束
This commit is contained in:
@@ -76,6 +76,41 @@ public class WxCpMessageRouter {
|
|||||||
this.exceptionHandler = new LogExceptionHandler();
|
this.exceptionHandler = new LogExceptionHandler();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 使用自定义的 {@link ExecutorService}.
|
||||||
|
*/
|
||||||
|
public WxCpMessageRouter(WxCpService wxMpService, ExecutorService executorService) {
|
||||||
|
this.wxCpService = wxMpService;
|
||||||
|
this.executorService = executorService;
|
||||||
|
this.messageDuplicateChecker = new WxMessageInMemoryDuplicateChecker();
|
||||||
|
this.sessionManager = wxCpService.getSessionManager();
|
||||||
|
this.exceptionHandler = new LogExceptionHandler();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 系统退出前,应该调用该方法
|
||||||
|
*/
|
||||||
|
public void shutDownExecutorService() {
|
||||||
|
this.executorService.shutdown();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 系统退出前,应该调用该方法,增加了超时时间检测
|
||||||
|
*/
|
||||||
|
public void shutDownExecutorService(Integer second) {
|
||||||
|
this.executorService.shutdown();
|
||||||
|
try {
|
||||||
|
if (!this.executorService.awaitTermination(second, TimeUnit.SECONDS)) {
|
||||||
|
this.executorService.shutdownNow();
|
||||||
|
if (!this.executorService.awaitTermination(second, TimeUnit.SECONDS))
|
||||||
|
log.error("线程池未关闭!");
|
||||||
|
}
|
||||||
|
} catch (InterruptedException ie) {
|
||||||
|
this.executorService.shutdownNow();
|
||||||
|
Thread.currentThread().interrupt();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <pre>
|
* <pre>
|
||||||
* 设置自定义的 {@link ExecutorService}
|
* 设置自定义的 {@link ExecutorService}
|
||||||
|
|||||||
@@ -78,6 +78,41 @@ public class WxCpTpMessageRouter {
|
|||||||
this.exceptionHandler = new LogExceptionHandler();
|
this.exceptionHandler = new LogExceptionHandler();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 使用自定义的 {@link ExecutorService}.
|
||||||
|
*/
|
||||||
|
public WxCpTpMessageRouter(WxCpTpService wxCpTpService, ExecutorService executorService) {
|
||||||
|
this.wxCpTpService = wxCpTpService;
|
||||||
|
this.executorService = executorService;
|
||||||
|
this.messageDuplicateChecker = new WxMessageInMemoryDuplicateChecker();
|
||||||
|
this.sessionManager = wxCpTpService.getSessionManager();
|
||||||
|
this.exceptionHandler = new LogExceptionHandler();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 系统退出前,应该调用该方法
|
||||||
|
*/
|
||||||
|
public void shutDownExecutorService() {
|
||||||
|
this.executorService.shutdown();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 系统退出前,应该调用该方法,增加了超时时间检测
|
||||||
|
*/
|
||||||
|
public void shutDownExecutorService(Integer second) {
|
||||||
|
this.executorService.shutdown();
|
||||||
|
try {
|
||||||
|
if (!this.executorService.awaitTermination(second, TimeUnit.SECONDS)) {
|
||||||
|
this.executorService.shutdownNow();
|
||||||
|
if (!this.executorService.awaitTermination(second, TimeUnit.SECONDS))
|
||||||
|
log.error("线程池未关闭!");
|
||||||
|
}
|
||||||
|
} catch (InterruptedException ie) {
|
||||||
|
this.executorService.shutdownNow();
|
||||||
|
Thread.currentThread().interrupt();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <pre>
|
* <pre>
|
||||||
* 设置自定义的 {@link ExecutorService}
|
* 设置自定义的 {@link ExecutorService}
|
||||||
@@ -215,8 +250,7 @@ public class WxCpTpMessageRouter {
|
|||||||
messageId.append(wxMessage.getMsgId())
|
messageId.append(wxMessage.getMsgId())
|
||||||
.append("-").append(wxMessage.getCreateTime())
|
.append("-").append(wxMessage.getCreateTime())
|
||||||
.append("-").append(wxMessage.getFromUserName());
|
.append("-").append(wxMessage.getFromUserName());
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
messageId.append(wxMessage.getMsgType())
|
messageId.append(wxMessage.getMsgType())
|
||||||
.append("-").append(wxMessage.getCreateTime())
|
.append("-").append(wxMessage.getCreateTime())
|
||||||
.append("-").append(wxMessage.getFromUserName())
|
.append("-").append(wxMessage.getFromUserName())
|
||||||
|
|||||||
@@ -89,12 +89,28 @@ public class WxMpMessageRouter {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 如果使用默认的 {@link ExecutorService},则系统退出前,应该调用该方法.
|
* 系统退出前,应该调用该方法
|
||||||
*/
|
*/
|
||||||
public void shutDownExecutorService() {
|
public void shutDownExecutorService() {
|
||||||
this.executorService.shutdown();
|
this.executorService.shutdown();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 系统退出前,应该调用该方法,增加了超时时间检测
|
||||||
|
*/
|
||||||
|
public void shutDownExecutorService(Integer second) {
|
||||||
|
this.executorService.shutdown();
|
||||||
|
try {
|
||||||
|
if (!this.executorService.awaitTermination(second, TimeUnit.SECONDS)) {
|
||||||
|
this.executorService.shutdownNow();
|
||||||
|
if (!this.executorService.awaitTermination(second, TimeUnit.SECONDS))
|
||||||
|
log.error("线程池未关闭!");
|
||||||
|
}
|
||||||
|
} catch (InterruptedException ie) {
|
||||||
|
this.executorService.shutdownNow();
|
||||||
|
Thread.currentThread().interrupt();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <pre>
|
* <pre>
|
||||||
|
|||||||
Reference in New Issue
Block a user