之前在單體架構項目中使用了websocket主動推送消息的功能,后來改成了微服務架構,結果發現部分消息丟失,沒能推送給客戶端;深入排查發現服務端無法感知websocket連接狀態,但是在單體架構里面是沒這個問題的,后來發現是網關在處理客戶端主動斷開的情況時發生了異常。
查閱資料發現是spring gateway
的bug
,并且相關issue
在2023年4月
已經關閉,于是根據時間節點,找到了4月之后的一個版本(3.1.8
)的spring-cloud-gateway-server
替換了原來的依賴,重新打包測試發現問題解決,特此記錄。
個人使用的spring cloud alibaba 2021.0.6.0
版本,對應Spring Cloud 2021.0.5
版本。
關鍵pom修改如下:
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-gateway</artifactId><!-- 排除舊版本 --><exclusions><exclusion><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-gateway-server</artifactId></exclusion></exclusions>
</dependency><!-- 引入新版本 -->
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-gateway-server</artifactId><version>3.1.8</version>
</dependency>
多說一句:
軟件是在不斷的迭代優化的,如果條件允許盡量跟上穩定發布版本。