我正在寻找最好的解决方案,以创建一个java web应用程序,以生成excel/PDf格式的报告。一些类似于Google Adwords的东西,用户可以创建计划报告,并在以后生成报告时下载它。
我正在考虑开发和java应用程序,其中用户登录,选择一个预定义的报告,并提供输入参数(如报告日期等),这个请求将被排队或保存为Quarts作业(首选持久队列)。作业将监控队列/作业并执行作业,生成报告(输出excel /pdf)并存储在磁盘中。当用户刷新屏幕或稍后重新登录时,报告应可供下载。
使用Spring batch和Quartz调度器可以做到这一点吗?我也希望像Spring admin一样,我可以看到队列中的请求数量(作业排队),并停止队列处理等。
发布于 2013-06-08 10:36:27
如果你想同时处理所有的报表请求,你可以使用spring-batch,也许是在晚上,当你的服务器不是在处理实时用户请求的时候(或者甚至在白天缓慢的时候)。
如果您希望每隔几秒钟/分钟/小时/等检查一次新作业,并在指定的时间间隔处理一个/多个作业,则可以使用quartz作业。
因此,quartz是一个调度器,而batch是一个进程。您可以使用quartz调度批处理作业,使其在特定时间运行。它们不是相互竞争的技术,它们是互补的。
关于您的问题:,假设您谈到了队列及其持久性,但是听起来很像您的问题适合于一个简单的jms模型。你需要一些通讯软件。如果您想让自己更轻松,我建议您使用spring-jms作为基本Java EE jms api的包装器-- spring包装器比基本jm简单。对于消息传递服务,我会考虑使用RabbitMQ,因为它同样非常简单。
使用jms架构,您可以将用户请求发送到队列,您已将该队列配置为持久化。队列上有一个自定义侦听器,它在报告生成器运行时将请求传递给报告生成器。您可以将一个或多个线程分配给侦听器,这意味着您应该可以轻松地调整报告生成器的性能。
有一个关于通过spring-integration使用rabbitmq的非常有用的DZone article (一组预先构建的模式实现,有助于将事物彼此连接起来)。
https://stackoverflow.com/questions/13743864
复制相似问题