瀏覽代碼

修改消息路由器,使用固定大小的线程池,并在构造函数里提供线程池大小的设置

master
Daniel Qian 10 年之前
父節點
當前提交
f49c47cf32
共有 2 個檔案被更改,包括 21 行新增5 行删除
  1. +10
    -2
      weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/WxCpMessageRouter.java
  2. +11
    -3
      weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpMessageRouter.java

+ 10
- 2
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 { public class WxCpMessageRouter {


private static final int DEFAULT_THREAD_POOL_SIZE = 20;

private final List<Rule> rules = new ArrayList<Rule>(); private final List<Rule> rules = new ArrayList<Rule>();


private final ExecutorService es = Executors.newCachedThreadPool();
private final ExecutorService executorService;


private final WxCpService wxCpService; private final WxCpService wxCpService;


public WxCpMessageRouter(WxCpService wxCpService) { public WxCpMessageRouter(WxCpService wxCpService) {
this.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) { if (matchRules.get(0).async) {
// 只要第一个是异步的,那就异步执行 // 只要第一个是异步的,那就异步执行
// 在另一个线程里执行 // 在另一个线程里执行
es.submit(new Runnable() {
executorService.submit(new Runnable() {
public void run() { public void run() {
for (final Rule rule : matchRules) { for (final Rule rule : matchRules) {
rule.service(wxMessage); rule.service(wxMessage);


+ 11
- 3
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 { public class WxMpMessageRouter {

private static final int DEFAULT_THREAD_POOL_SIZE = 20;

private final List<Rule> rules = new ArrayList<Rule>(); private final List<Rule> rules = new ArrayList<Rule>();


private final ExecutorService executorService = Executors.newCachedThreadPool();
private final ExecutorService executorService;


private final WxMpService wxMpService; private final WxMpService wxMpService;


public WxMpMessageRouter(WxMpService wxMpService) { public WxMpMessageRouter(WxMpService wxMpService) {
this.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) { if (matchRules.get(0).async) {
// 只要第一个是异步的,那就异步执行 // 只要第一个是异步的,那就异步执行
// 在另一个线程里执行 // 在另一个线程里执行
executorService.submit(new Runnable() {
executorService.execute(new Runnable() {
public void run() { public void run() {
for (final Rule rule : matchRules) { for (final Rule rule : matchRules) {
rule.service(wxMessage); rule.service(wxMessage);


Loading…
取消
儲存