pom文件中注释掉原来默认的websocket同步方式,改成zookeeper同步。git
<!--soul data sync start use zookeeper--> <dependency> <groupId>org.dromara</groupId> <artifactId>soul-spring-boot-starter-sync-data-zookeeper</artifactId> <version>${project.version}</version> </dependency> <!--soul data sync start use websocket--> <!--<dependency>--> <!--<groupId>org.dromara</groupId>--> <!--<artifactId>soul-spring-boot-starter-sync-data-websocket</artifactId>--> <!--<version>${project.version}</version>--> <!--</dependency>-->
同理注释掉yml问价中的默认的websocket配置修改成zookeeper配置github
zookeeper: url: localhost:2181 sessionTimeout: 5000 connectionTimeout: 2000
对应的网关soul-bootstrap层根据官方文档作对应的设置web
根据上一文的调试过程。咱们一样找到了zookeeper对应的配置文件和加载的代码
从传递格式能够看到与websocket的同步的配置基本同样,可是一样的,我在这里断点调试时 final ObjectProvider
紧接着。我发现CommonPluginDataSubscriber类上并无Spring中相关的注解。那么他是如何被注入到spring中的呢。因而我又进行了全局搜索,发现这个类在soul-web模块中的SoulConfiguration模块中进行了注入
@Bean
public PluginDataSubscriber pluginDataSubscriber(final ObjectProvider<List> pluginDataHandlerList) { spring
return new CommonPluginDataSubscriber(pluginDataHandlerList.getIfAvailable(Collections::emptyList));
}
同时能够发现这个类中有其余转发和插件处理等相关逻辑。这个后续的分析可能会用到,值得关注一下 另外能够看到上述列表中一样适用了ObjectProvider来注入插件数据处理类。利用这个线索。咱们能够全局搜索一下PluginDataHandler相关的类,搜索后发现,基本每个插件都是相似的这种作法Configuration-->PluginDataHandler
同时,能够知道数据流向RateLimiterConfiguration-->RateLimiterPluginDataHandler-->SoulConfiguration-->pluginDataSubscriber-->ZookeeperSyncDataConfiguration编程
同时在ZookeeperSyncDataService咱们能够看到基于zookeeper的客户端进行了选择器和规则,元数据和权限相关的数据同步操做。关于这一部分的内容,后续咱们继续查看如何进行的数据同步
同时,后面咱们会讲解一些关于响应式编程的相关内容,例如Mono和Fluxbootstrap
欢迎搜索关注本人与朋友共同开发的微信面经小程序【大厂面试助手】和公众号【微瞰技术】,以及总结的分类面试题https://github.com/zhendiao/JavaInterview小程序