我遇到类似于here上的线索的工作情况。不同之处在于我们没有使用Web服务。但我们正在使用网络应用程序。我们要求允许用户下载8000条记录,其中至少有30列通过jxl写入excel文件。
这是一个长时间运行的过程,由于我不知道的原因而没有异步完成。它还具有巨大的内存占用量~500 - 800 MB。最重要的是,它平均需要2分10秒才能完成。
我们目前正在做的是通过jms从应用程序服务器委托此要求。应用服务器将请求发送给代理,然后消费者从队列中获取请求,处理它并发回excel文件的URL。
我对此有一些疑虑,因为我读过有关JMS的内容,并且大多数建议的用例都涉及异步请求,因此用户不必等待很长时间,例如发送电子邮件,发送批准请求,开发票。这个thread中有很多例子,建议的用例可以异步完成。所以我们当前的解决方案听起来像是黑客而不是真正的解决方案。
可以采取哪些建议,模式来进一步改善这一过程?
编辑:遗憾的是,如果您可以将其称为“同步性”,那么我无法取消该功能,因为这是业务需求。所以我正在寻找能够提高性能并减少进程堆内存使用的答案/调整/技巧/模式。
答案 0 :(得分:4)
我明白了吗?
如果是这样,我同意,这是对JMS的异步性质的可怕滥用。
我要做的是:
立即向用户显示一个结果页面,其中包含正在处理您的请求的文字然后
答案 1 :(得分:1)
我不会建议你可以用你的JMS后端做什么 - 它可能用得不好或者可能是 - 我不确定。
我们实现了类似的东西,这就是我们最终的结果(我们的后端implmentation完全不同,对于不同的用例,但“async user exp”匹配):