炸裂:SpringAI新版發(fā)布,支持?jǐn)嗑€重連!
盼星星盼月亮,Spring AI 新版 1.1.0-M1(1.1.0 里程式版本)終于支持 Steamable HTTP 了,也就意味著 Spring AI 的 MCP 服務(wù)終于支持自動(dòng)斷線重連了。
1.SteamableHTTP
定義:Streamable HTTP 是基于標(biāo)準(zhǔn) HTTP 協(xié)議的流式數(shù)據(jù)傳輸模式,允許客戶(hù)端或服務(wù)器在數(shù)據(jù)完全生成前,分塊(Chunk)傳輸數(shù)據(jù),實(shí)現(xiàn)“邊生成、邊傳輸、邊使用”的實(shí)時(shí)通信效果。它不是新協(xié)議,而是對(duì) HTTP 的優(yōu)化用法,結(jié)合了分塊傳輸、連接復(fù)用、斷線重連等特性。
2.SteamableHTTP和SSE
SSE 是 Spring AI 此次新版發(fā)布之前主要使用的通訊協(xié)議,是一種基于 HTTP 協(xié)議的 服務(wù)器向客戶(hù)端單向推送數(shù)據(jù) 的技術(shù),允許服務(wù)器在建立連接后 隨時(shí)向客戶(hù)端發(fā)送實(shí)時(shí)更新,無(wú)需客戶(hù)端反復(fù)發(fā)起請(qǐng)求。它是 HTML5 標(biāo)準(zhǔn)的一部分,設(shè)計(jì)簡(jiǎn)單,適合需要實(shí)時(shí)通知但無(wú)需雙向通信的場(chǎng)景。
SSE 和 Steamable HTTP 的主要區(qū)別如下:
維度 | SSE | Streamable HTTP |
靈活性 | ? 僅單向通信,格式受限 | ? 支持雙向、多格式、斷點(diǎn)續(xù)傳 |
性能 | ? 高并發(fā)時(shí)資源占用高 | ? 高并發(fā)下更高效 |
3.使用SteamableHTTP
Steamable HTTP 在新版中的使用如下。
先添加新版依賴(lài):
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-starter-mcp-server-webflux</artifactId>
<version>1.1.0-M1</version>
</dependency>配置使用 Steamable 協(xié)議:
spring:
ai:
mcp:
server:
protocol: STREAMABLE # 配置使用 Steamable 協(xié)議客戶(hù)端也添加對(duì)應(yīng)的新版本依賴(lài):
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-starter-mcp-client-webflux</artifactId>
<version>1.1.0-M1</version>
</dependency>之后配置 MCP 服務(wù)器地址就可以直接調(diào)用了:
spring:
mcp:
client:
streamable-http:
connections:
weather-server:
url: http://localhost:10086/api # 指向剛才啟動(dòng)的 MCP Server其他實(shí)現(xiàn)代碼不變。
小結(jié)
Spring AI 之前版本最被人詬病的就是不支持 Streamable HTTP,所以在實(shí)現(xiàn)自定義 MCP 服務(wù)器端時(shí)很麻煩,需要自己手動(dòng)實(shí)現(xiàn)斷線自動(dòng)重連功能。但現(xiàn)在新版本支持之后我們就可以非常方便的實(shí)現(xiàn) MCP 服務(wù)了,大家可以動(dòng)手試一下。


























