Spring Reactive MVC vs @EnableAsync

Nik*_*eek 5 java spring asynchronous spring-mvc reactive-programming

我是Spring Reactive Modules的新手.我得到的基本上是,它的核心是反应式编程,我们可以开发端到端的反应式服务.

但是,假设我只想将我的控制器设置为Async,这样我就可以在多个线程上工作并发送"任务已启动"(特别是这个)的回复,让我的工作继续并关闭HTTP链接.

我也了解@EnableAsync@Async制作方法Async.

如果我只是@Async在我的控制器方法之上使用我想要异步的话.它工作但是,这是一个好习惯吗?我们可以在生产代码中使用它吗?

Fab*_*ira 5

我没有看到任何问题,@Async因为这将释放请求线程。但这是一个简单的方法,它有很多限制。请注意,如果您想处理反应式流,您没有能够做到这一点的 API。例如,如果一个@Async方法调用另一个方法,则第二个方法不会是异步的。

相反,Webflux 将带来最完整的 API(在 Java 中)以响应式方式处理事物。你不能只用@Async 做什么。例如,使用 Flux,您可以被动地处理或访问多个层,而这是您无法达到的方式。

尽管如此,它会给你带来一个新的宇宙,所以如果你只是想释放请求的线程,你的方法就好了,但如果你需要更多,你将不得不以更复杂的方式处理它。

现在,如果您想响应 HTTP 请求,然后异步执行工作,这不是您想要的。我建议您拥有一个 JMS 提供程序(如 ActiveMQ),您的控制器在其中发送要由作业处理的消息并回答请求。

希望能帮助到你!