Skip to content

Commit de0266b

Browse files
🐛 #2999【小程序/公众号】修复异步消息路由报错的问题
1 parent 6e93062 commit de0266b

File tree

2 files changed

+9
-2
lines changed

2 files changed

+9
-2
lines changed

weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/message/WxMaMessageRouter.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -128,16 +128,20 @@ public WxMaXmlOutMessage route(final WxMaMessage wxMessage, final Map<String, Ob
128128
if (matchRules.size() == 0) {
129129
return null;
130130
}
131-
String miniAppId = WxMaConfigHolder.get();
131+
132132
final List<Future<?>> futures = new ArrayList<>();
133133
WxMaXmlOutMessage result = null;
134134
for (final WxMaMessageRouterRule rule : matchRules) {
135135
// 返回最后一个非异步的rule的执行结果
136136
if (rule.isAsync()) {
137+
//获取当前线程使用的实际appId,兼容只有一个appId,且未显式设置当前使用的appId的情况
138+
String miniAppId = this.wxMaService.getWxMaConfig().getAppid();
137139
futures.add(
138140
this.executorService.submit(() -> {
141+
//子线程中设置实际的appId
139142
this.wxMaService.switchoverTo(miniAppId);
140143
rule.service(wxMessage, context, WxMaMessageRouter.this.wxMaService, WxMaMessageRouter.this.sessionManager, WxMaMessageRouter.this.exceptionHandler);
144+
WxMaConfigHolder.remove();
141145
})
142146
);
143147
} else {

weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpMessageRouter.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -248,16 +248,19 @@ public WxMpXmlOutMessage route(final WxMpXmlMessage wxMessage, final Map<String,
248248

249249
WxMpXmlOutMessage res = null;
250250
final List<Future<?>> futures = new ArrayList<>();
251-
String appId = WxMpConfigStorageHolder.get();
251+
252252
for (final WxMpMessageRouterRule rule : matchRules) {
253253
// 返回最后一个非异步的rule的执行结果
254254
if (rule.isAsync()) {
255+
//获取当前线程使用的实际appId。兼容只有一个appId,且未显式设置当前使用的appId的情况
256+
String appId = this.wxMpService.getWxMpConfigStorage().getAppId();
255257
futures.add(
256258
this.executorService.submit(() -> {
257259
//传入父线程的appId
258260
this.wxMpService.switchoverTo(appId);
259261
rule.service(wxMessage, context, mpService, WxMpMessageRouter.this.sessionManager,
260262
WxMpMessageRouter.this.exceptionHandler);
263+
WxMpConfigStorageHolder.remove();
261264
})
262265
);
263266
} else {

0 commit comments

Comments
 (0)