0

我正在寻找一种模式和/或框架,它可以以一种易于配置的方式对以下问题进行建模。

每说 3 分钟,我需要在 Web 应用程序上下文中启动一组作业,这些作业将同时访问 Web 服务以获取最新版本的数据,并将其推送到数据库。问题是数据库将被大量用于读取数据以对数据进行大量复杂的计算。我们目前正在使用 Spring,所以我一直在寻找 Spring Batch 来运行这个过程。有人对使用 Spring 或类似系统的其他技术有任何建议/模式/示例吗?

4

3 回答 3

1

当我们需要进程重复运行时,我们使用 ServletContextlisteners 在我们的 Web 应用程序中启动 TimerTasks。ServletContextListener 在应用服务器启动应用程序或应用程序重新启动时启动。然后,计时器任务就像一个单独的线程,在指定的时间段内重复您的代码。

ServletContextListener http://www.javabeat.net/examples/2009/02/26/servletcontextlistener-example/

TimerTask http://enos.itcollege.ee/~jpoial/docs/tutorial/essential/threads/timer.html

于 2012-04-04T14:43:22.357 回答
1

是否有可能将 Web 应用程序中的工作重构为独立应用程序?

这样,您可以将批处理作业粘贴到单独的批处理服务器上(这样批处理作业的额外负载不会影响您的 Web 应用程序),然后调用 Web 服务并更新数据库。然后可以使用 cron 或 Autosys 之类的东西来开始这项工作。

我们正是为此目的使用 Spring-Batch。

数据库设计还取决于批处理数据的用途。如果是出于报告目的,我建议将操作数据库与报告数据库分开,使用数据库链接将所需数据从操作数据库获取到报告数据库中,然后在报告数据库上运行复杂查询。这样,负载就会从操作数据库中转移出去。

于 2012-04-04T14:55:01.490 回答
1

我认为还值得研究像camel-integration这样的框架。还要看看所谓的企业集成模式。检查目录- 它可能为您提供一些有用的词汇来思考手头的缩放/调度问题。

该框架本身与 Spring 集成得非常好。

于 2012-04-05T08:51:00.677 回答