侧边栏壁纸
博主头像
小鱼吃猫博客博主等级

你所热爱的,便是你的生活。

  • 累计撰写 113 篇文章
  • 累计创建 47 个标签
  • 累计收到 9 条评论

目 录CONTENT

文章目录

如何在WebFlux中调用阻塞方法

小鱼吃猫
2023-11-20 / 0 评论 / 0 点赞 / 14 阅读 / 1180 字

如何在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());        
}

此方法来源于[https://stackoverflow.com/questions/52945696/blocking-i-o-operation-with-webflux](https://stackoverflow.com/questions/52945696/blocking-i-o-operation-with-webflux)

第二种,创建新线程

Thread t = new Thread(() -> {
    exportService.runTask(exportLogSchema);
});
t.start();

0

评论区