Spring 是否可以使用Mono<;对象>;。阻塞操作的发布(Schedulers.elastic)?

Spring 是否可以使用Mono<;对象>;。阻塞操作的发布(Schedulers.elastic)?,spring,spring-boot,reactive-programming,project-reactor,spring-webflux,Spring,Spring Boot,Reactive Programming,Project Reactor,Spring Webflux,我理解在反应流中使用阻塞操作时,我们应该使用Publisher.publishOn(Schedulers.elastic).subscribe(//阻塞操作转到此处) 我理解,当我的发布者发布项目列表(例如:Flux)时,未来的项目不必等待当前项目被阻塞操作阻塞,这是有意义的。但是如果是单声道,有必要吗?因为我的管道里只有一个项目在流动 另外,我使用的是spring boot 2无功流量控制器,类似这样的 @RestController("/item") public Mono<Respo

我理解在反应流中使用阻塞操作时,我们应该使用
Publisher.publishOn(Schedulers.elastic).subscribe(//阻塞操作转到此处)

我理解,当我的发布者发布项目列表(例如:Flux)时,未来的项目不必等待当前项目被阻塞操作阻塞,这是有意义的。但是如果是单声道,有必要吗?因为我的管道里只有一个项目在流动

另外,我使用的是spring boot 2无功流量控制器,类似这样的

@RestController("/item")
public Mono<Response> saveItem(Mono<Item> item) {
  return
  item.publishOn(Schedulers.elastic()) **//Do I need this ?**
      .map(blockingDB.save(item))
      .map(item -> new Response(Item);

}
@RestController(“/item”)
公共单声道存储项(单声道项){
返回
item.publishOn(Schedulers.elastic())***//我需要这个吗**
.map(blockingDB.save(项目))
.map(项目->新响应(项目);
}
是的,绝对是

如果你不这样做,你就阻塞了主处理/事件循环线程。在这些线程中,你应该只有你的机器有(有效)CPU的数量

假设是8。这意味着只有8个并发请求在等待阻塞操作,您的应用程序就完全停止了


另外,请确保在阻塞操作之后将处理移回一个线程池,以便进行CPU密集型工作。

您可能也对该线程池感兴趣