Grails status更新长时间运行的任务

时间:2014-02-14 03:19:00

标签: jquery ajax grails

我有一个长时间运行的任务(> 1.5分钟),我希望能够通过ajax提供用户完成状态。 这是我目前正在做的事情: 我使用ajax处理上传(使用ajax上传插件),并在任务运行时显示忙标签。 我希望能够显示已完成的百分比(不是上传的百分比 - 我已经为此提供了更新。)即,在我的Excel文件上传完成并开始处理行之后,我希望能够提供状态更新给用户。

这是我的研究/个人知识引领我的地方: 1.使用线程 2.使用JMS或某种消息传递 3.使用grails事件。 (不确定这将如何工作)

有人知道实现这个的最佳方式是什么?

2 个答案:

答案 0 :(得分:2)

过去我做过这个时,我使用了以下方法:

  1. Dispatch the long running process in another thread。长时间运行的进程会更新某个会话作用域组件(或数据库中)
  2. 的进度
  3. 将用户的浏览器返回到页面并启动一些javascript that regularly polls服务器端控制器以获取当前进度
  4. 如果您想显示%完成,jQuery UI progress bar非常容易使用。

答案 1 :(得分:1)

我们在Grails应用程序中使用Spring Batch来执行长时间运行的任务(=批处理作业)。它是Spring产品系列的框架部分,旨在构建批处理作业。

SpringSource / GoPivotal的工作人员在整体架构和提供的模式中真正考虑了很多。如果您的应用程序中有多个批处理作业,我会考虑查看它。

对于您的特定进度要求,Spring Batch在运行时提供JobOperatorJobExplorer等组件,可用于查找当前批处理作业状态。如果你愿意,可以单独SO question about monitoring progress in Spring Batch作为起点。

相关问题