ソースを参照

issue #47 同步规则同步执行,异步规则异步执行

master
Daniel Qian 10年前
コミット
c5b9d568e5
2個のファイルの変更18行の追加34行の削除
  1. +9
    -17
      weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/WxCpMessageRouter.java
  2. +9
    -17
      weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpMessageRouter.java

+ 9
- 17
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;


+ 9
- 17
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;


読み込み中…
キャンセル
保存