gpt4 book ai didi

java - Spring Webflux - 将数据流发送到端点

转载 作者:行者123 更新时间:2023-12-02 10:12:20 25 4
gpt4 key购买 nike

我有一个关于 Spring Webflux 的问题。我想创建一个使用内容类型文本/事件流的响应式(Reactive)端点。不是生产而是消费。我们的一项服务需要将大量小对象发送到另一项服务,我们认为以这种方式进行流传输可能是一个很好的解决方案。

@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 建立与端点的连接并向其传输数据。例如使用代码:

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 秒产生一个值的流。我遇到的问题是,WebClient 完全读取发布者,然后将数据作为一个整体发送,而不是逐一流式传输。我可以使用此客户端或任何其他客户端执行此操作吗?我不想走 websockets 的路。

最佳答案

SSE 标准不允许 POST。即使在浏览器 API 中也无法指定方法 https://www.w3.org/TR/eventsource/

服务器端事件作为名称状态旨在将事件从服务器传递到客户端。

关于java - Spring Webflux - 将数据流发送到端点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54914486/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com