🐛 #2999【小程序/公众号】修复异步消息路由报错的问题

This commit is contained in:
heiheihei 2023-05-04 16:34:48 +08:00 committed by GitHub
parent 6e93062104
commit de0266b5e1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 9 additions and 2 deletions

View File

@ -128,16 +128,20 @@ public class WxMaMessageRouter {
if (matchRules.size() == 0) {
return null;
}
String miniAppId = WxMaConfigHolder.get();
final List<Future<?>> futures = new ArrayList<>();
WxMaXmlOutMessage result = null;
for (final WxMaMessageRouterRule rule : matchRules) {
// 返回最后一个非异步的rule的执行结果
if (rule.isAsync()) {
//获取当前线程使用的实际appId兼容只有一个appId且未显式设置当前使用的appId的情况
String miniAppId = this.wxMaService.getWxMaConfig().getAppid();
futures.add(
this.executorService.submit(() -> {
//子线程中设置实际的appId
this.wxMaService.switchoverTo(miniAppId);
rule.service(wxMessage, context, WxMaMessageRouter.this.wxMaService, WxMaMessageRouter.this.sessionManager, WxMaMessageRouter.this.exceptionHandler);
WxMaConfigHolder.remove();
})
);
} else {

View File

@ -248,16 +248,19 @@ public class WxMpMessageRouter {
WxMpXmlOutMessage res = null;
final List<Future<?>> futures = new ArrayList<>();
String appId = WxMpConfigStorageHolder.get();
for (final WxMpMessageRouterRule rule : matchRules) {
// 返回最后一个非异步的rule的执行结果
if (rule.isAsync()) {
//获取当前线程使用的实际appId兼容只有一个appId且未显式设置当前使用的appId的情况
String appId = this.wxMpService.getWxMpConfigStorage().getAppId();
futures.add(
this.executorService.submit(() -> {
//传入父线程的appId
this.wxMpService.switchoverTo(appId);
rule.service(wxMessage, context, mpService, WxMpMessageRouter.this.sessionManager,
WxMpMessageRouter.this.exceptionHandler);
WxMpConfigStorageHolder.remove();
})
);
} else {