-
-
Notifications
You must be signed in to change notification settings - Fork 8.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
【小程序/公众号】异步消息路由 #2999
【小程序/公众号】异步消息路由 #2999
Conversation
只有一个appId,不也要走 |
这个只设置了当前线程,未设置的线程的依然是default。 |
只有在初始化填充config的时候,填充的线程才有设置,其他的线程没有设置。所以其他的线程初始状态依然是“default”。 |
获取的时候,如果是只有一个appId,那么就只会取那个,这个不会使用到“default”这个appId。 |
不是很明白,其它线程是什么意思?在路由分发的时候就只有当前的线程啊,此时的appId已经确定了,直接从 |
使用线程池的情况,非初始化线程取出来的就是“default”,初始化的时候,只设置了初始化线程的appId。 |
个人感觉是没必要,最初的那个就挺好,放在循环中反而浪费。而且也没必要 |
这个是为了hold住在父线程中未设置appId的情况。WxMaConfigHolder.get() 会取出“default”,设置进去的时候会因为没有“default”这个appId导致报错。“default” 这个appId本身是不存在的,在子线程中设置这个不合理。 |
本地去获取也没有太耗时的 |
消息过来时,都会判定appId吧?但也说不准有人特立独行不这样判定,那确实会有这个问题,但是如果他不这么判定,那么在后续的同步路由中,同样也无法从ThreadLocal获取到这个appId。感觉没必要考虑这么多。
|
后面的是直接获取config。在一个appId的情况,不会使用本地线程变量。设计上确实是没有说必须在本地线程设置appId(在路由前并没有设置失败就报错的逻辑),所以需要跟随原始的设计想法。 |
在mp里面有多个路由方法,有不传appId和穿appId两种,传了appId没找到报错。但是ma里面是只有一个路由方法,没有传appId,所以之前是允许在线程变量不设置appId的。不能说因为这个原因打破这个特性,必须要在线程变量中设置appId |
这个是为了hold住只有一个appId的情况,只有一个appId为了方便,自然可以不设置,设计逻辑也是这样。 |
哦,倒是没有考虑兼容旧设计的问题。那也可以这样:
都可以,目前没什么疑问了 |
本地线程可能会取出来“default”的字符,所以又会出现目前的问题。当然也可以判断是否“default”,但是这样就有硬编码了。 |
哦,默认值不是空。那硬编码确实不好。 |
使用异步消息时,向子线程传递父线程的appId的时候。兼容只有一个appId的时候,未显式设置appId的情况