我有一个Grails应用程序,其中包含一些计算密集型优化,运行时间约为5分钟(可能更长)。目前,我正在主请求线程中执行这些操作,即请求需要5分钟才能返回。虽然它可以工作,但从可用性的角度来看,当然很糟糕。
那么最好的实现异步处理的方式是什么呢?我想涉及到ThreadPoolExecutor,但如何启动和访问它呢?我可以将其建模为Grails服务吗?或者作为Job(似乎只适用于定期任务)?
此外,处理作业状态的最佳方法是什么?通过标志还是可能是DB中的整个新类?让浏览器显示旋转图标并持续轮询直到状态改变?
那么最好的实现异步处理的方式是什么呢?我想涉及到ThreadPoolExecutor,但如何启动和访问它呢?我可以将其建模为Grails服务吗?或者作为Job(似乎只适用于定期任务)?
此外,处理作业状态的最佳方法是什么?通过标志还是可能是DB中的整个新类?让浏览器显示旋转图标并持续轮询直到状态改变?