mirror of
https://gitee.com/binary/weixin-java-tools.git
synced 2025-04-05 17:38:05 +08:00
🐛 #2999【小程序/公众号】修复异步消息路由报错的问题
This commit is contained in:
parent
6e93062104
commit
de0266b5e1
@ -128,16 +128,20 @@ public class WxMaMessageRouter {
|
|||||||
if (matchRules.size() == 0) {
|
if (matchRules.size() == 0) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
String miniAppId = WxMaConfigHolder.get();
|
|
||||||
final List<Future<?>> futures = new ArrayList<>();
|
final List<Future<?>> futures = new ArrayList<>();
|
||||||
WxMaXmlOutMessage result = null;
|
WxMaXmlOutMessage result = null;
|
||||||
for (final WxMaMessageRouterRule rule : matchRules) {
|
for (final WxMaMessageRouterRule rule : matchRules) {
|
||||||
// 返回最后一个非异步的rule的执行结果
|
// 返回最后一个非异步的rule的执行结果
|
||||||
if (rule.isAsync()) {
|
if (rule.isAsync()) {
|
||||||
|
//获取当前线程使用的实际appId,兼容只有一个appId,且未显式设置当前使用的appId的情况
|
||||||
|
String miniAppId = this.wxMaService.getWxMaConfig().getAppid();
|
||||||
futures.add(
|
futures.add(
|
||||||
this.executorService.submit(() -> {
|
this.executorService.submit(() -> {
|
||||||
|
//子线程中设置实际的appId
|
||||||
this.wxMaService.switchoverTo(miniAppId);
|
this.wxMaService.switchoverTo(miniAppId);
|
||||||
rule.service(wxMessage, context, WxMaMessageRouter.this.wxMaService, WxMaMessageRouter.this.sessionManager, WxMaMessageRouter.this.exceptionHandler);
|
rule.service(wxMessage, context, WxMaMessageRouter.this.wxMaService, WxMaMessageRouter.this.sessionManager, WxMaMessageRouter.this.exceptionHandler);
|
||||||
|
WxMaConfigHolder.remove();
|
||||||
})
|
})
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
|
@ -248,16 +248,19 @@ public class WxMpMessageRouter {
|
|||||||
|
|
||||||
WxMpXmlOutMessage res = null;
|
WxMpXmlOutMessage res = null;
|
||||||
final List<Future<?>> futures = new ArrayList<>();
|
final List<Future<?>> futures = new ArrayList<>();
|
||||||
String appId = WxMpConfigStorageHolder.get();
|
|
||||||
for (final WxMpMessageRouterRule rule : matchRules) {
|
for (final WxMpMessageRouterRule rule : matchRules) {
|
||||||
// 返回最后一个非异步的rule的执行结果
|
// 返回最后一个非异步的rule的执行结果
|
||||||
if (rule.isAsync()) {
|
if (rule.isAsync()) {
|
||||||
|
//获取当前线程使用的实际appId。兼容只有一个appId,且未显式设置当前使用的appId的情况
|
||||||
|
String appId = this.wxMpService.getWxMpConfigStorage().getAppId();
|
||||||
futures.add(
|
futures.add(
|
||||||
this.executorService.submit(() -> {
|
this.executorService.submit(() -> {
|
||||||
//传入父线程的appId
|
//传入父线程的appId
|
||||||
this.wxMpService.switchoverTo(appId);
|
this.wxMpService.switchoverTo(appId);
|
||||||
rule.service(wxMessage, context, mpService, WxMpMessageRouter.this.sessionManager,
|
rule.service(wxMessage, context, mpService, WxMpMessageRouter.this.sessionManager,
|
||||||
WxMpMessageRouter.this.exceptionHandler);
|
WxMpMessageRouter.this.exceptionHandler);
|
||||||
|
WxMpConfigStorageHolder.remove();
|
||||||
})
|
})
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
|
Loading…
Reference in New Issue
Block a user