我正在寻找一种模式和/或框架,可以轻松配置模型来解决以下问题。
每说3分钟,我需要在Web应用程序上下文中启动一组作业,这些作业将同时访问Web服务以获取最新版本的数据,并将其推送到数据库。问题是数据库将被大量用于读取数据,以便对数据进行大量复杂的计算。我们目前正在使用spring,所以我一直在寻找Spring Batch来运行这个过程有没有人有任何建议/模式/使用Spring或类似系统的其他技术的例子?
答案 0 :(得分: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
答案 1 :(得分:1)
是否可以将作业从Web应用程序重构为独立应用程序?
通过这种方式,您可以将批处理作业粘贴到单独的批处理服务器上(以便批处理作业的额外负载不会影响您的Web应用程序),然后调用Web服务并更新数据库。然后可以使用诸如cron或Autosys之类的东西开始工作。
我们正在将Spring-Batch用于此目的。
数据库设计还取决于批处理数据的用途。如果是出于报告目的,我建议将操作数据库与报告数据库分开,使用数据库链接从操作数据库获取所需数据到报告数据库,然后在报告数据库上运行复杂查询。这样负载就会从运营数据库中移开。
答案 2 :(得分:1)
我认为值得研究像camel-integration这样的框架。另请参阅所谓的企业集成模式。检查catalog - 它可能会为您提供一些有用的词汇表来考虑手头的缩放/调度问题。
框架本身与Spring完全集成。