spring webflux-如何以1秒的间隔从数据库中获取所有数据?

时间:2019-08-20 12:41:06

标签: spring mongodb spring-boot spring-webflux

请告诉我

我的MongoDB中有4条记录。好的。 我正在将Reactive Spring用于当前任务。

如果收到此请求,我将从数据库中获取所有数据(4条记录):

@GetMapping(value = "/stream/positions", produces = MediaType.TEXT_EVENT_STREAM_VALUE)
public Flux<Position> streamAllPositions() {
    return positionRepository.findAll();
}

我想指定一个1秒钟的间隔,我将用该间隔从数据库接收所有记录(4秒钟内有4条记录)。 那些。我将接收来自数据库的第一条记录,第二秒将接收来自数据库的第二条记录,第二秒将接收来自数据库的第三条记录,第二秒,我将从数据库接收的第四条记录。 / p>

我尝试根据每秒生成一次的某些默认值来执行此操作。很好。

// Get default value every 1 second
@GetMapping(value = "/stream/persons", produces = MediaType.TEXT_EVENT_STREAM_VALUE)
public Flux<Person> emitPersons() {
    return Flux.interval(Duration.ofSeconds(1))
            .map(val -> new Person( 1, Sex.MAN, "default", "default", 30, "default"));
}

但是我需要从数据库中获取真实数据(不是一次全部,每条记录分别间隔1秒)。

告诉我,我该如何实施? 谢谢。

2 个答案:

答案 0 :(得分:2)

您可以使用delayElements运算符:

actionButton

答案 1 :(得分:1)

尝试在检索期间添加超时。

引用:https://projectreactor.io/docs/core/release/reference/