From c5b9d568e50080074a83042b6bfc5d92afb5d4b4 Mon Sep 17 00:00:00 2001 From: Daniel Qian Date: Tue, 9 Dec 2014 12:10:19 +0800 Subject: [PATCH] =?UTF-8?q?issue=20#47=20=E5=90=8C=E6=AD=A5=E8=A7=84?= =?UTF-8?q?=E5=88=99=E5=90=8C=E6=AD=A5=E6=89=A7=E8=A1=8C=EF=BC=8C=E5=BC=82?= =?UTF-8?q?=E6=AD=A5=E8=A7=84=E5=88=99=E5=BC=82=E6=AD=A5=E6=89=A7=E8=A1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../weixin/cp/api/WxCpMessageRouter.java | 26 +++++++------------ .../weixin/mp/api/WxMpMessageRouter.java | 26 +++++++------------ 2 files changed, 18 insertions(+), 34 deletions(-) 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 897702ac..bf5bf86e 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 @@ -87,25 +87,17 @@ public class WxCpMessageRouter { return null; } - if (matchRules.get(0).async) { - // 只要第一个是异步的,那就异步执行 - // 在另一个线程里执行 - executorService.submit(new Runnable() { - public void run() { - for (final Rule rule : matchRules) { - rule.service(wxMessage); - } - } - }); - return null; - } - WxCpXmlOutMessage res = null; for (final Rule rule : matchRules) { - // 返回最后一个匹配规则的结果 - res = rule.service(wxMessage); - if (!rule.reEnter) { - break; + // 返回最后一个非异步的rule的执行结果 + if(rule.async) { + executorService.submit(new Runnable() { + public void run() { + rule.service(wxMessage); + } + }); + } else { + res = rule.service(wxMessage); } } return res; 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 f4122fdc..e904e41b 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 @@ -87,25 +87,17 @@ public class WxMpMessageRouter { return null; } - if (matchRules.get(0).async) { - // 只要第一个是异步的,那就异步执行 - // 在另一个线程里执行 - executorService.execute(new Runnable() { - public void run() { - for (final Rule rule : matchRules) { - rule.service(wxMessage); - } - } - }); - return null; - } - WxMpXmlOutMessage res = null; for (final Rule rule : matchRules) { - // 返回最后一个匹配规则的结果 - res = rule.service(wxMessage); - if (!rule.reEnter) { - break; + // 返回最后一个非异步的rule的执行结果 + if(rule.async) { + executorService.submit(new Runnable() { + public void run() { + rule.service(wxMessage); + } + }); + } else { + res = rule.service(wxMessage); } } return res;