繁体   English   中英

使用JMS长时间运行Web应用程序的文件创建过程

[英]Using JMS for long running file creation process for web application

我们要求用户允许以各种格式生成搜索结果导出。 问题在于,导出的大小可能会有所不同,并且需要几秒钟到几分钟才能完成。 我希望允许用户能够在请求运行时触发该请求并继续执行其他操作,但是我不想在必要时通过使用后台线程来损害Web应用程序服务器的性能。

我最初的想法是使Web应用程序与生成过程脱钩。 我可以将JMS与消息驱动Bean(MDB)一起使用,该消息驱动Bean处理与Web应用程序分开部署的文件生成。 允许根据将来的需求对其进行单独缩放。

从技术上讲,我看到Web应用程序维护着已启动并为其发送JMS消息的请求列表。 当MDB完成时,它将更新发送回Web应用程序侦听的队列,并相应地使用状态以及文件URI信息更新请求列表。 当用户要下载他们请求的生成文件时,该文件将流式传输到浏览器,然后删除。

作为额外的预防措施,MDB还会将延迟的消息触发到清除队列中,该延迟到期后,MDB会检查生成的文件的URI,如果文件继续存在,则将其删除并通知Web应用程序,以便它可能会通过删除或将其标记为已自动删除来相应地更新其内部列表。

这样做的好处是,如果我需要增加并发导出作业的数量,则可以轻松生成另一个JMS客户端进程或调整现有进程以运行更多的并发MDB处理程序,而无需接触Web应用程序本身。

我很好奇是否还有其他我可以忽略的选择,我应该考虑的问题,或者这是否是过去对其他人有用的可靠的分离解决方案。

给定您的方案,我将使用会话bean。

或为工作设置了JMX,但这是传统方式。 我不喜欢JMX。

但是只是为了让您知道这些报告是否有限,每天需要一次,而简单的形式就是使用石英作业,但是我想如果您可以同时进行多个作业就无法运行。

很好,有一些石英作业设置很容易设置,您可以从应用程序中触发它,如果要清理,可以创建多个作业,并且可以使它们依赖。 您可以在这里参考石英安装。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM