Java Web应用程序中的Quartz与ScheduledExecutorService
对于监视当前在命令行上运行并使用ScheduledExecutorService
Java应用程序的系统,我想编写一个简单的Web应用程序版本,以便在像Apache Tomcat或Eclipse Jetty这样的Servlet容器中运行。
我已经读过Quartz作为Web应用程序的流行作业调度程序之一。 将此应用程序从ScheduledExecutorService
移植到Quartz会更好(可能是因为更好的servlet容器集成)?
向应用程序添加另一个库依赖项不是问题,我对反对使用ScheduledExecutorService
技术原因感兴趣。
这取决于你使用它的是什么。
石英对于编程时间非常有用,例如每小时一小时。
ScheduledExecutorService对于重复不必在特定时间发生的任务非常有用。 它更简单,可能更有效。 如果你有这个工作,它告诉我你不需要Quartz。
ScheduledExecutorService在较低级别运行,您必须自己实施所有调度监视/维护工具。
Quartz拥有大量的工具 ,如工作持久性,交易,聚类等。
Java的Executor解决方案允许您:
- 立即执行任务
- 在初始延迟之后启动任务(并且可选地在后续延迟周期之后重新运行任务)。
但Quartz在运行任务/工作的时间和频率方面赋予您极大的灵活性。 例如,周一至周五工作周期间的一个时间表以及周末期间的其他时间表(或根本不是)。 或者在本月的最后一天,您不必弄清楚某个月的最后一天是在28日,29日,30日还是31日。 以下是cron样式调度所适应的灵活性的更多示例 – http://www.quartz-scheduler.org/documentation/quartz-2.x/tutorials/crontrigger.html#examples
使用Java的库比较容易,但是对于想要开始使用Quartz工作的简单代码库示例的人来说,我已将此模板放在一起以供免费下载使用 – https://github.com/javateer/quartz-example