我有一个 Grails 应用程序,它进行了一些计算密集型优化,运行时间约为 5 分钟(也许更多)。目前,我在主请求线程中执行这些操作,即请求返回需要 5 分钟。它有效,但从可用性的角度来看当然是可怕的。
那么以异步方式实现这一点的最佳方法是什么?我假设必须涉及一个 ThreadPoolExecutor,但是我该如何启动和访问它呢?我可以将它建模为 Grails 服务吗?还是一份工作(但似乎这些只适用于经常性工作)?
另外,处理工作状态的最佳方法是什么?通过 aa 标志或数据库中的全新类?浏览器是否显示微调器并继续轮询直到状态发生变化?