Kaynağa Gözat

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

master
Daniel Qian 10 yıl önce
ebeveyn
işleme
f49c47cf32
2 değiştirilmiş dosya ile 21 ekleme ve 5 silme
  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 Dosyayı Görüntüle

@@ -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<Rule> rules = new ArrayList<Rule>();

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);


+ 11
- 3
weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpMessageRouter.java Dosyayı Görüntüle

@@ -40,15 +40,23 @@ import java.util.regex.Pattern;
*
*/
public class WxMpMessageRouter {

private static final int DEFAULT_THREAD_POOL_SIZE = 20;

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

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);


Yükleniyor…
İptal
Kaydet