diff --git a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/WxCpMessageRouter.java b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/WxCpMessageRouter.java index 8c3d493c..01cc6321 100644 --- a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/WxCpMessageRouter.java +++ b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/WxCpMessageRouter.java @@ -41,14 +41,22 @@ import me.chanjar.weixin.cp.bean.WxCpXmlOutMessage; */ public class WxCpMessageRouter { + private static final int DEFAULT_THREAD_POOL_SIZE = 20; + private final List rules = new ArrayList(); - private final ExecutorService es = Executors.newCachedThreadPool(); + private final ExecutorService executorService; private final WxCpService wxCpService; public WxCpMessageRouter(WxCpService wxCpService) { this.wxCpService = wxCpService; + this.executorService = Executors.newFixedThreadPool(DEFAULT_THREAD_POOL_SIZE); + } + + public WxCpMessageRouter(WxCpService wxMpService, int threadPoolSize) { + this.wxCpService = wxMpService; + this.executorService = Executors.newFixedThreadPool(threadPoolSize); } /** @@ -79,7 +87,7 @@ public class WxCpMessageRouter { if (matchRules.get(0).async) { // 只要第一个是异步的,那就异步执行 // 在另一个线程里执行 - es.submit(new Runnable() { + executorService.submit(new Runnable() { public void run() { for (final Rule rule : matchRules) { rule.service(wxMessage); diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpMessageRouter.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpMessageRouter.java index 0dcbb9e0..b445d9c9 100644 --- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpMessageRouter.java +++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpMessageRouter.java @@ -40,15 +40,23 @@ import java.util.regex.Pattern; * */ public class WxMpMessageRouter { - + + private static final int DEFAULT_THREAD_POOL_SIZE = 20; + private final List rules = new ArrayList(); - private final ExecutorService executorService = Executors.newCachedThreadPool(); + private final ExecutorService executorService; private final WxMpService wxMpService; public WxMpMessageRouter(WxMpService wxMpService) { this.wxMpService = wxMpService; + this.executorService = Executors.newFixedThreadPool(DEFAULT_THREAD_POOL_SIZE); + } + + public WxMpMessageRouter(WxMpService wxMpService, int threadPoolSize) { + this.wxMpService = wxMpService; + this.executorService = Executors.newFixedThreadPool(threadPoolSize); } /** @@ -79,7 +87,7 @@ public class WxMpMessageRouter { if (matchRules.get(0).async) { // 只要第一个是异步的,那就异步执行 // 在另一个线程里执行 - executorService.submit(new Runnable() { + executorService.execute(new Runnable() { public void run() { for (final Rule rule : matchRules) { rule.service(wxMessage);