gpt4 book ai didi

spring - 使用 Spring Batch 或 Quartz 调度程序来调度作业

转载 作者:行者123 更新时间:2023-12-02 03:40:08 25 4
gpt4 key购买 nike

我正在寻找创建 java web 应用程序以生成 excel/PDF 格式的报告的最佳解决方案。类似于 Google Adwords,用户可以创建计划报告并在稍后生成报告时下载它。

我正在考虑开发java应用程序,其中用户登录,选择预定义的报告并提供输入参数(如报告日期等),该请求将排队或保存为Quarts Job(首选持久队列)。作业将监视队列/作业并执行作业,生成报告(输出 excel/pdf)并存储在磁盘中。当用户刷新屏幕或稍后重新登录时,该报告应该可供下载。

使用Spring批处理和Quartz调度器我可以做到这一点吗?我也期待像 Spring admin 那样,我可以在队列中看到请求数量(排队的作业),并停止队列处理等。

最佳答案

如果您想同时处理所有报告请求,也许是在晚上,当您的服务器没有忙于处理实时用户请求时(甚至在白天的缓慢时段),您可以使用 spring-batch。

如果您想每隔几秒/分钟/小时/等检查一次新作业,并在指定的时间间隔处理其中一个/多个作业,则可以使用 quartz 作业。

所以,quartz 是一个调度程序,batch 是一个进程。您可以使用quartz 来安排批处理作业在特定时间运行。它们不是竞争性技术,而是互补的。

关于您的问题:鉴于您谈论了队列及其持久性,但是听起来您的问题很适合简单的 jms 模型。您需要一些消息传递软件。如果您想让自己轻松一点,我建议使用 spring-jms作为基本 Java EE JMS api 的包装器——Spring 包装器比基本 jms 简单。对于消息服务,我会查看 RabbitMQ ,因为这又非常简单。

使用 jms 架构,您可以将用户请求发布到队列,并将其配置为持久性的。您将在队列上有一个自定义监听器,每当报告生成器运行时将请求传递给它。您可以将一个或多个线程分配给监听器,这意味着您应该可以轻松调整报告生成器的性能。

有一个非常有用的DZone article关于通过spring-integration使用rabbitmq (一组预构建的模式实现,有助于将事物相互连接)。

关于spring - 使用 Spring Batch 或 Quartz 调度程序来调度作业,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13743864/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com