◐ Shell
clean mode source ↗

【小程序/公众号】异步消息路由 by biubiubiu3971 · Pull Request #2999 · binarywang/WxJava

这个是为了hold住在父线程中未设置appId的情况。WxMaConfigHolder.get() 会取出“default”,设置进去的时候会因为没有“default”这个appId导致报错。“default” 这个appId本身是不存在的,在子线程中设置这个不合理。

消息过来时,都会判定appId吧?但也说不准有人特立独行不这样判定,那确实会有这个问题,但是如果他不这么判定,那么在后续的同步路由中,同样也无法从ThreadLocal获取到这个appId。感觉没必要考虑这么多。

if (!wxMaService.switchover(appid)) {
  throw new IllegalArgumentException(String.format("未找到对应appid=[%s]的配置,请核实!", appid));
}

这个是为了hold住只有一个appId的情况,只有一个appId为了方便,自然可以不设置,设计逻辑也是这样。
这个设计的具体代码在 BaseWxMaServiceImpl.getWxMaConfig中有体现。mp和ma都有这个体现