我有一个Grails应用程序,它具有一些计算密集型优化,运行时间约为5分钟(可能更多).目前,我在主请求线程中执行这些操作,即请求返回需要5分钟.它有效,但从可用性的角度来看当然是可怕的.
那么以异步方式实现它的最佳方法是什么?我假设一个ThreadPoolExecutor必须参与,但我如何启动和访问它?我可以将其建模为Grails服务吗?或者一份工作(虽然这些工作只是为了重复工作)?
另外,处理工作状态的最佳方法是什么?通过一个标志或者DB中的全新类?让浏览器显示一个微调器并继续轮询,直到状态发生变化?