- dispatcher:这个字段代表的是IO线程池和业务线程池的边界
- all:所有消息都派发到线程池,包括请求,响应,连接事件,断开事件,心跳等。对应的是AllChannelHandler
- direct:所有消息都不派发到线程池,全部在IO线程上直接执行。(这种做法在绝大多数情况下都不合理,因为毕竟业务逻辑相关对IO事件都是复杂的)。具体的实现方式就是在装饰者的层级上直接下调,不再包装线程池。
- message:只有请求响应消息派发到线程池,其它连接断开事件,心跳等消息,直接在IO线程上执行。
-
execution:官方的说法是:只请求消息派发到线程池,不含响应,响应和其它连接断开事件,心跳等消息,直接在IO线程上执行。
-
connection:在IO线程上,将连接建立以及断开事件放入队列,有序逐个执行,其它消息派发到线程池。
-
可以按需配置,如下示例
-
<dubbo:protocol name="dubbo" dispatcher="all" threadpool="fixed" threads="100" />