我有一個(gè)關(guān)于 Spring Webflux 的問(wèn)題。我想創(chuàng)建一個(gè)使用內(nèi)容類(lèi)型文本/事件流的反應(yīng)式端點(diǎn)。不是生產(chǎn)而是消費(fèi)。我們的一項(xiàng)服務(wù)需要向另一個(gè)服務(wù)發(fā)送大量小對(duì)象,我們認(rèn)為以這種方式流式傳輸可能是一個(gè)很好的解決方案。@PostMapping(value = "/consumeStream", consumes = MediaType.TEXT_EVENT_STREAM_VALUE)public Mono<Void> serve(@RequestBody Flux<String> data) { return data.doOnNext(s -> System.out.println("MessageReceived")).then();}我正在嘗試使用 Spring WebClient 建立與端點(diǎn)的連接并將數(shù)據(jù)流式傳輸?shù)剿@缡褂么a:WebClient.builder().baseUrl("http://localhost:8080") .clientConnector(new ReactorClientHttpConnector()) .build() .post() .uri("/test/serve") .contentType(MediaType.TEXT_EVENT_STREAM) .body(BodyInserters.fromPublisher(flux, String.class)) .exchange() .block();通量是每 1 秒產(chǎn)生一個(gè)值的流。我遇到的問(wèn)題是 WebClient 完全讀取發(fā)布者,然后將數(shù)據(jù)作為一個(gè)整體發(fā)送,而不是一個(gè)一個(gè)地流式傳輸。我可以使用此客戶(hù)端或其他任何方法來(lái)執(zhí)行此操作嗎?我不想采用 websockets 的方式。
1 回答

長(zhǎng)風(fēng)秋雁
TA貢獻(xiàn)1757條經(jīng)驗(yàn) 獲得超7個(gè)贊
SSE 標(biāo)準(zhǔn)不允許 POST。即使在瀏覽器 API https://www.w3.org/TR/eventsource/中也無(wú)法指定方法
作為名稱(chēng)狀態(tài)的服務(wù)器端事件旨在將事件從服務(wù)器傳遞到客戶(hù)端。
添加回答
舉報(bào)
0/150
提交
取消