我正在开发一个spring 4 mvc应用程序,并且我有一个必须在后台完成的数据库事务。
在调用URL /paramters_selected
时会触发它。然后控制器启动一个需要几分钟的异步任务。在处理任务时,我返回"处理"这样控制器方法将呈现/processing
- JSP视图。后台任务完成后,"结果"视图应该呈现。
在后台交易完成后调用/result
是否可行,如果可行,怎么办?此外,是否可以不断更新"处理"查看以便可以使用某种进度条?
另外,什么样的"技术"最适合这个问题?我在春天遇到了异步方法的术语,可完成的期货,延迟结果和可听的未来。
提前谢谢。
答案 0 :(得分:1)
如果您正在使用Async,那么我建议您不要等待来自服务器的结果,并且最好在一段时间后继续刷新状态,或者创建回调,继续监听服务器对异步任务的响应。
如果你使用进度条直到异步任务完成,我想你的意思是只是在UI和HTTP连接中显示一旦请求发送到异步任务就完成了该请求,否则保持资源不好,因为它会影响性能等待资源的系统和其他任务最终将因无法获得免费资源而死亡。
因此,对于Async任务,您可以使用任何Java消息传递队列,其中您的任务将推入JMS队列,Async任务将保留deque与JMS队列,并且一旦任务完成,将通知形式的响应发送到原始任务
答案 1 :(得分:1)
通过使用WebSocket,您可以实时实现此功能。
http://docs.spring.io/spring/docs/current/spring-framework-reference/html/websocket.html