Soul閘道器原始碼分析 7期 番外

2021-10-16 17:28:04 字數 1158 閱讀 9302

開個小差, 追下閘道器的接收請求並**中, soul借助 spring-web 的實現.

追下閘道器監聽請求的開啟, 找到配置類soulconfiguration:

@configuration

public

class

soulnettywebserve***ctory

}

這裡應該是借助 spring-web 框架 啟動 netty 的開始了.

再關注下另乙個配置類soulconfiguration:

@configuration

public

class

soulconfiguration

] [{}]"

, soulplugin.

named()

, soulplugin.

getclass()

.getname()

));// 這裡初始化 soulwebhandler

return

newsoulwebhandler

(soulplugins);}

}

這裡初始化了soulwebhandler類, 這個類是外掛程式鏈的關鍵, 分析下他到底為啥在請求中會被呼叫:

public

final

class

soulwebhandler

implements

webhandler

}

soulwebhandler實現 spring-web 框架的webhandler並實現handle(), 這是框架鏈上一環, 請求時肯定也會被呼叫.

我們知道這個soulwebhandler的外掛程式鏈, 最最主要的功能就是請求**並接受響應, 這裡借助 spring-web 框架的exchange上下文, 在執行過程中將響應資訊注入其中, 即可完成使命.

而後續我猜測 spring-web 框架也會訂閱這整個web鏈的mono, 就能阻塞住請求執行緒, 即可在得到響應資訊後返回.

Soul閘道器原始碼學習05

soul web基於webflux 可以使用netty作為應用伺服器,eventloop 可以說是netty的排程中心,負責事件的監聽 i o事件 訊號事件 channelpipeline 事件處理鏈,channelhandler事件處理。相對於channelpipeline 而言netty事件分為...

Soul閘道器原始碼學習06

在soul閘道器中每個請求,都會通過責任鏈的方式執行相匹配的外掛程式,所以外掛程式也是soul閘道器的核心,soul閘道器的外掛程式是可插拔的,並且是外掛程式之間依賴關係是松耦合且外掛程式的功能實現高聚合,其次使用者可根據需求定製外掛程式滿足自己的需求。soul外掛程式配置類,使用 spring.f...

soul閘道器原始碼解析 sofa接入 sofa外掛程式

執行結果 遇到的問題 需要啟動乙個zookeeper 單機就行了 檢查下 soul bootstrap 的pom檔案下是否存在以下配置 com.alipay.sofa sofa rpc all 5.7.6 org.apache.curator curator client 4.0.1 org.apa...