【发布时间】:2019-07-01 20:35:48
【问题描述】:
我正在尝试将 ReactiveCrudRepository 检索为 Flux<Client> 的文档对象转换为 Flux<ClientDto>
现在我找到了一种方法来做到这一点,我不确定这是否会阻塞:
public Mono<ServerResponse> findAll(final ServerRequest serverRequest) {
final Flux<ClientDto> map = clientService.findAll().map(client -> modelMapper.map(client, ClientDto.class)) /*.delayElements(Duration.ofSeconds(10))*/;
return ServerResponse.ok()
.contentType(MediaType.TEXT_EVENT_STREAM)
.body(map, ClientDto.class);
}
我已经尝试添加注释的 delayElements 方法,它似乎是一个接一个地发送它们,所以不阻塞。
我认为这更像是一个嵌套的问题,但核心是我想知道如何确定我是否做了一些阻塞。
提前致谢!
【问题讨论】:
-
在 Flux 的映射后添加 .log() ,您可以在日志文件/控制台中看到执行情况
-
会试试这个。除了 onSubscription、onNext、onComplete 之外,我应该在元素流中寻找什么。有没有在流被阻塞时调用的方法?
-
查看执行线程,但如果您不显式调用阻塞事件(如 blockLast 等),并且不使用阻塞库,它将作为解除阻塞运行
标签: spring blocking dto reactive