1

我目前有一个控制器可以进行一些繁重的处理(批量 csv 文件处理 - cvs 文件范围从 150Mb 到 400Mb)。CSV 文件上传到临时文件位置。处理由服务完成,该服务将文件位置从外部 jar 传递给 API(基本的 java API 调用 - 没有 Web 服务调用或任何东西)。服务方法大约需要 2-3 次返回,用户当前必须等待这段时间才能完成处理并在提交表单后加载页面 - 这不是最好的用户体验。

遇到过此类问题的 Grails 用户,此类问题的最佳解决方案是什么?我是 Grails 和 JavaEE 的新手,因此这基本上是一个关于如何构建这样一个系统以及为此可用的库类型的问题。

我已经用谷歌搜索了很多。人们已经用 JMS、RabbitMQ 等作为类似问题的解决方案做出了回应。但这些似乎是用火箭筒代替苍蝇来解决我的菜鸟想法。非常感谢您的建议。

谢谢你。

4

2 回答 2

1

如果您希望该方法在不同的线程中执行,您可以在服务方法上使用 Spring @Async 注释。这是我在 Grails 应用程序中采用的方法,非常简单。

这里有一个如何设置的例子: http ://tux2323.blogspot.co.uk/2012/05/grails-and-spring-async-annotation.html?m=1

于 2013-07-13T14:10:18.663 回答
0

使用quartz插件...让控制器安排一个即时作业(安排很快,用户将立即得到响应,并且处理将发生在一个在不同线程中运行的石英作业中)。只需在所有工作完成后通知用户(发送电子邮件或其他)。

或者,使用executor插件在新线程中启动工作。2.3 将有异步支持,这可以在这里提供帮助。

于 2013-07-13T01:25:06.307 回答