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