> 文章列表 > 浅谈Dubbo中Filter机制

浅谈Dubbo中Filter机制

浅谈Dubbo中Filter机制

关于Dubbo中Filter扩展开发使用的方式参考之前的Dubbo使用Filter扩展的使用方式,比较简单实现org.apache.dubbo.rpc.Filter接口及内部子接口Listener,或继承ListenableFilter抽象类就可以进行自定义Dubbo Filter,再结合SPI集成即可。

本文主要介绍Dubbo中的Filter链是如何初始化的。其实dubbo服务在启动过程中进行服务导出时实现了Filter链的初始化。Dubbo的Filter机制是一种典型的责任链模式。

ProtocolFilterWrapper

ProtocolFilterWrapper类中定义了Filter初始化的一些操作。

 @Overridepublic <T> Exporter<T> export(Invoker<T> invoker) throws RpcException {if (UrlUtils.isRegistry(invoker.getUrl())) {return protocol.export(invoker);}return protocol.export(buildInvokerChain(invoker, SERVICE_FILTER_KEY, CommonConstants.PROVIDER));}

其中ProtocolFilterWrapper#export方法是服务导出过程中Filter链初始化的执行入口。export方法内部则调用了ProtocolFilterWrapper#buildInvokerChain方法ÿ