如何在web页面中,实现耗时操作的后台执行?多线程吗?
系统框架是spring,
功能描述:画面输入条件,单击确定按钮,执行check
check通过后,执行一个非常耗时的操作(读取文件和数据库内容,组织成文件,压缩成zip),大约需要2--4个小时
现在的情况是,这个过程中,页面不能做其他动作。
客户要求,在进行这个耗时操作的过程中,可以去做其他的操作(比如,其他画面的录入,检索等等),只要这个过程结束后发个邮件通知他即可。
用多线程可以实现吗?给个思路。
另外这个过程中,如果用户又回到这个耗时画面该如何处理?
在线等,谢谢!!!
------解决方案--------------------用后台任务框架来处理。
也就是用户点提交后,就在任务表中增加一条处理任务,然后就可以返回了,告知用户任务已经启动。
后台用个任务调度框架去执行任务就行了。
为了避免用户重复发起任务,注意对重复任务的数量进行控制。
------解决方案--------------------异步处理,有现成的框架RabbitMQ。
不能用多线程,因为servlet本身是多线程,如果再开多个线程不容易控制。
------解决方案--------------------