来自常规WebClient请求的Spring反应流数据

时间:2017-11-01 20:55:39

标签: spring spring-boot spring-webflux

我正在学习新的Spring WebFlux和反应式编程。

我想创建将某些数据流式传输到Angular客户端的反应式API。 我将从另一个不支持流的第三方API中获取部分数据。

所以,据我所知,我需要:

  1. 创建REST流端点。
  2. 将某些服务与此相关联。
  3. 此服务将使用WebClient每5秒调用第三方API。和 把数据放到我的流中。 (不确定这一步)
  4. 该流将由@RestController返回。
  5. 如何实施这4个步骤?

1 个答案:

答案 0 :(得分:2)

假设您的远程服务响应了杰克逊可以反序列化为Something.class的POJO集合,您可以执行以下操作:

@GetMapping(path = "/streaming", produces = MediaType.TEXT_EVENT_STREAM_VALUE)
@ResponseBody
public Flux<Something> streamSomething() {
  return WebClient.create()
    .get().uri("http://example.org/resource")
    .retrieve().bodyToFlux(Something.class)
    .delaySubscription(Duration.ofSeconds(5))
    .repeat();
}