Spring Reactive MVC vs @EnableAsync

时间:2018-01-05 04:43:54

标签: java spring spring-mvc asynchronous reactive-programming

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

但是,假设我只想将我的控制器设置为Async,这样我就可以在多个线程上工作并发送一个像#34; Task Started" (特别是这个)并让我的工作继续并关闭HTTP链接。

我还了解了@EnableAsync@Async来制作Async方法。

如果我只使用@Async高于我想要进行异步的控制器方法,该怎么办?它工作但是,这是一个好习惯吗?我们可以在生产代码中使用它吗?

1 个答案:

答案 0 :(得分:3)

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

Webflux将带来最完整的API(用Java)来处理反应方式。你只能用@Async做什么。例如,使用Flux,您可以反复处理或访问多个层,这使您无法达到您的工作方式。

然而,它会为你带来一个新的世界,所以如果你只想发布请求的主题,你的方法就好了,但是如果你需要更多,你将不得不以更复杂的方式处理它

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

希望它有所帮助!