Skip to content

Commit

Permalink
🐛 #2999【小程序/公众号】修复异步消息路由报错的问题
Browse files Browse the repository at this point in the history
  • Loading branch information
biubiubiu3971 authored May 4, 2023
1 parent 6e93062 commit de0266b
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -128,16 +128,20 @@ public WxMaXmlOutMessage route(final WxMaMessage wxMessage, final Map<String, Ob
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 {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -248,16 +248,19 @@ public WxMpXmlOutMessage route(final WxMpXmlMessage wxMessage, final Map<String,

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 {
Expand Down

0 comments on commit de0266b

Please sign in to comment.