[英]What Java/Design Patterns can be used for Long Running Synchronous Processes?
我在工作中遇到的情况类似于这里的话题 。 不同之处在于我们没有使用Web服务。 而是我们正在使用一个Web应用程序。 我们有一项要求,要求用户下载至少30列的8000条记录,并通过jxl写入excel文件。
这是一个长期运行的过程,由于我不知道的原因,它不是异步完成的。 它还具有巨大的内存空间〜500-800 MB。 最重要的是,平均需要2分10秒才能完成。
我们当前正在做的事情是通过jms从应用程序服务器中委派该需求。 应用服务器将请求发送到代理,然后使用者从队列中获取请求,进行处理,然后发回excel文件的url。
我对此有些疑虑,因为我已经读过有关JMS的文章,并且建议的大多数用例都涉及异步请求,这样用户就不必再等很长时间了,例如发送电子邮件,发送批准请求,开具发票。 该线程中有很多示例,建议的用例可以异步完成。 因此,我们当前的解决方案听起来像是骇客,而不是真正的解决方案。
有什么建议,模式可以用来进一步改善这一过程吗?
编辑:不幸的是,如果您可以将其称为功能的“同步性”,那是我的业务需求,因此我无法取消它。 因此,我在寻找可以提高性能并减少进程的堆内存使用量的答案/调整/技巧/模式。
我明白这个意思吗?
如果是这样,我同意,那就是对JMS异步特性的严重滥用。
我要做的是:
立即向用户显示结果页面,其中包含正在处理您的请求的文本,然后
我不会建议您使用JMS后端可以做什么-它可能使用不当或也许是-我不确定。
我们实现了类似的操作,最终得到的结果(对于不同的用例,我们的后端实现是完全不同的,但是“异步用户exp”匹配):
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.