为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕丝7291255 2022-07-14 10:27:55
我有一个关于 Spring Webflux 的问题。我想创建一个使用内容类型文本/事件流的反应式端点。不是生产而是消费。我们的一项服务需要向另一个服务发送大量小对象,我们认为以这种方式流式传输可能是一个很好的解决方案。@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 的方式。
查看完整描述

1 回答

?
长风秋雁

TA贡献1757条经验 获得超7个赞

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

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


查看完整回答
反对 回复 2022-07-14
  • 1 回答
  • 0 关注
  • 169 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信