I am implementing a module for my web application that would be responsible for scheduling and running batch jobs. I am looking for frameworks (Quartz, Spring Batch) etc that can help me to avoid developing everything from scratch. The main features that I am looking for are:
UI that can be used to schedule the jobs and check the status of jobs in progress
Monitoring of the Jobs in progress e.g. time taken, reason for failure etc
Easy Extensibility to create new jobs. Our application will have few 'out of box' jobs that is these would be bundled
Ability to run batch and shell scripts
Minimal Performance Overhead
Interface with web application or can run within a Servlet container
There are quite a good number of frameworks available but I am looking for some sort of expert opinion on these. Also, would I need to use two different frameworks (quartz + spring batch) for these two requirements - Scheduling and Running. OR there is a single framework available that meets both the requirements.
I only know Quartz because I needed one time to launch jobs as cron tasks (with similar syntax) in
a J2EE context. It was very easy to integrate the library into a full fledged J2EE application
(JSF, Hibernate,..). Sadly I didn't get the full potential of it in any way but for our purposes it was
enough, adaptable to launch jobs asynchronously from within a JSP or any technology at the view layer.
I think you must read requirements, usefulness, learning curve,etc of both projects to decide properly:
If you need a UI for Quartz scheduler(s), you may want to check the QuartzDesk project that I am the founder of. QuartzDesk provides a UI that allows you to remotely connect to your running Quartz scheduler instances, list their jobs, triggers etc. It captures and persists the job execution history so that you can check what your scheduler did at any time. You can even configure QuartzDesk to intercept log messages produced by the executed jobs and make these stored in the execution history for later review. Monitoring of jobs and triggers is also supported (both poll-based and push-based). You can dynamically add/update/delete jobs and triggers. You will also get visual statistics so that you have some overview of what your jobs did withing the specified time period, e.g. how many times there were executed, how many times their failed, what is the average exec time of your jobs and how this evolves in time etc.
QuartzDesk runs in any popular servlet container or app server and supports all major DB engines. For a complete list of all features, please refer to this page. There are 3 editions available, one of which (Lite edition) is free.