我是从dubbo的官网说明,找到的github下载源码的地址:https://github.com/apache/dubbo.git。
在这个模块下,找到一个提供方和消费方demo运行:
我本来只是想看一下源码的异步调用的实现方案,因为之前对dubbo可能也不是特别的了解,在配置线程模型的时候,遇到了一个问题。如下:
官网给的配置方式:线程模型
我配置在消费方,发现不起作用:dispatcher属性、threadpool属性、threads属性。
关于dispathcer可以查看线程模型介绍。
我对源码进行了下debug查看源码实现以及一些相关测试,结果如下:
提供方,默认dispatcher:all,threadpool:fixed。
提供方支持配置线程模型这几个属性的标签是:
<dubbo:provider />
<dubbo:protocol />
上面这两个标签都支持配置dispatcher、threadpool相关属性。
消费方,默认threadpool:cached
消费方的dispatcher的值是和订阅的提供方的服务的dispatcher的值一样。
所以消费方配置threadpool相关属性的标签是:
<dubbo:consumer />
<dubbo:protocol />标签可不支持。
我对dubbo的原理和实现还没怎么研究过,所以了解的也有限,根据官方线程模型这里的说明 ,dispathcer是根据提供方的处理能力来看什么时候使用及哪种线程模型合适。
如下图:
消费端并没有体现需要使用dispathcer。源码中消费端url的dispatcher属性应当是来源于订阅的提供方的url。