我是Spring Reactive Modules的新手。我得到的基本上是,它的核心是反应式编程,我们可以开发端到端的反应式服务。
但是,假设我只想将我的控制器设置为Async,这样我就可以在多个线程上工作并发送一个像#34; Task Started" (特别是这个)并让我的工作继续并关闭HTTP
链接。
我还了解了@EnableAsync
和@Async
来制作Async方法。
如果我只使用@Async
高于我想要进行异步的控制器方法,该怎么办?它工作但是,这是一个好习惯吗?我们可以在生产代码中使用它吗?
答案 0 :(得分:3)
我没有看到使用@Async
的任何问题,因为这将释放请求线程。但这是一种简单的方法,它有很多局限性。请注意,如果要处理反应流,则没有能够使用API的API。例如,如果@Async
方法调用另一个,则第二个不会是异步。
Webflux将带来最完整的API(用Java)来处理反应方式。你只能用@Async做什么。例如,使用Flux,您可以反复处理或访问多个层,这使您无法达到您的工作方式。
然而,它会为你带来一个新的世界,所以如果你只想发布请求的主题,你的方法就好了,但是如果你需要更多,你将不得不以更复杂的方式处理它
现在,如果您想回答HTTP请求然后异步执行工作,那么这不是您想要的。我建议您有一个JMS提供程序(如ActiveMQ),您的控制器会在其中发送要由作业处理的消息并回答该请求。
希望它有所帮助!