8

我对 Java Quartz 不太熟悉,我们只是使用了一个每天安排的测试作业。对于我们的 Struts2 web 应用程序,我们希望运行一些安排在一天中不同时间的日常作业。作业应该处于持久状态,这样即使作业由于服务器关闭/应用程序失败而失败,它们也应该稍后在服务器启动时重新执行。我也可以将作业的状态/结果存储在数据库中,以便监控作业。任何的意见都将会有帮助。

- 谢谢

4

3 回答 3

7

无论您提到什么,在 Quartz 调度程序中都是可能的,并且已经有一个带有触发器的功能,我们通常称之为Misfire Instructions这就是文档所说的

触发器的另一个重要属性是它的“失火指令”。如果由于调度程序关闭,或者因为 Quartz 的线程池中没有可用的线程来执行作业,持久性触发器“错过”其触发时间,则会发生不触发。不同的触发器类型有不同的失火指令可供它们使用。默认情况下,他们使用“智能策略”指令——该指令具有基于触发器类型和配置的动态行为。当调度程序启动时,它会搜索任何未触发的持久触发器,然后根据其单独配置的不触发指令更新每个触发器。当您开始在自己的项目中使用 Quartz 时,您应该熟悉在给定触发器类型上定义的失火指令,并在他们的 JavaDoc 中进行了解释。有关失火指令的更多具体信息将在针对每种触发器类型的教程课程中提供。

关于作业持久性 Quartz 几乎没有内置机制,您只需将 JobStore 设置为JDBCJobStore

我建议您使用Quartz 调度程序文档,它非常简单,并且有很多教程和示例可供开始。

如果您的应用程序中没有使用 Spring,则无需添加额外级别的抽象和依赖项。

于 2012-06-25T09:26:56.930 回答
2

您可以将 Quartz 与Sprig batch结合使用。

前者提供用于管理各种流的 API(根据您的需要复杂)、作业状态的持久存储以及用于根据作业执行状态监控和重新运行作业的 API。另一个方便的库是Spring Batch admin。它有网络控制台和 5 分钟指南。

Quartz 用作调度程序作业状态持久性由 Spring 批处理处理。它可以作为独立的 Java 应用程序运行,也可以在 Web/应用程序容器中运行(对我来说 Tomcat 就足够了)。

祝你好运!

于 2012-06-25T09:16:01.903 回答
1

我们Job stores在 Java Quartz 中有 api。这会将有关作业信息的数据保存在数据库中。所以我想这会对你有所帮助。您可以查看此链接以了解有关代码和数据库结构的信息。

于 2012-06-25T09:10:24.120 回答