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小程序