如何在WebFlux中调用阻塞方法
众所周知,WebFlux是响应式的,想要调用阻塞方法,会报错,大致报错如下:
block()/blockFirst()/blockLast() are blocking, which is not supported in thread parallel-1
第一种
处理方法如下,使用如下代码,其中 ```blockingOp()``` 是你自己的阻塞代码。
@GetMapping
public Mono<Response> getResponse() {
return Mono.fromCallable(() -> blockingOp())
.publishOn(Schedulers.boundedElastic());
// 旧版使用下边代码
// .publishOn(Schedulers.elastic());
}
第二种,创建新线程
Thread t = new Thread(() -> {
exportService.runTask(exportLogSchema);
});
t.start();
评论区