我有一个长时间运行的任务(> 1.5分钟),我希望能够通过ajax提供用户完成状态。 这是我目前正在做的事情: 我使用ajax处理上传(使用ajax上传插件),并在任务运行时显示忙标签。 我希望能够显示已完成的百分比(不是上传的百分比 - 我已经为此提供了更新。)即,在我的Excel文件上传完成并开始处理行之后,我希望能够提供状态更新给用户。
这是我的研究/个人知识引领我的地方: 1.使用线程 2.使用JMS或某种消息传递 3.使用grails事件。 (不确定这将如何工作)
有人知道实现这个的最佳方式是什么?
答案 0 :(得分:2)
过去我做过这个时,我使用了以下方法:
如果您想显示%完成,jQuery UI progress bar非常容易使用。
答案 1 :(得分:1)
我们在Grails应用程序中使用Spring Batch来执行长时间运行的任务(=批处理作业)。它是Spring产品系列的框架部分,旨在构建批处理作业。
SpringSource / GoPivotal的工作人员在整体架构和提供的模式中真正考虑了很多。如果您的应用程序中有多个批处理作业,我会考虑查看它。
对于您的特定进度要求,Spring Batch在运行时提供JobOperator
或JobExplorer
等组件,可用于查找当前批处理作业状态。如果你愿意,可以单独SO question about monitoring progress in Spring Batch作为起点。