当前位置: 首页 > 面试题库 >

JavaQuartz作业持久性

商兴朝
2023-03-14
问题内容

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

- 谢谢


问题答案:

无论您提到什么,都可以在Quartz Scheduler中使用,并且已经有一个带有触发器的功能,我们通常称其Misfire Instructions为Doc所说的

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

关于Job Persistence,Quartz内置了一些内置机制,您需要将JobStore设置为 JDBCJobStore

我建议您使用Quartz Scheduler文档非常简单,并有很多教程和示例开始。

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



 类似资料:
  • 我向连接到JobLaunchingGateway的spring-integration通道发送一条消息,对于每个消息,JobLaunchingGateway尝试启动一个新的TaskExecutor。 让通道由一个持久队列(例如ActiveMQ)支持,让任务执行器池大小等于2。 我想对系统进行配置,以便当executor池大小已经使用时,新消息不会被JobLaunchingGateway使用,而是保

  • 我如何判断RDD[0]、RDD[1]和RDD[2]是重新计算的还是仅仅脱水的? 总的来说,通过查看工作历史记录,你如何判断rdd是重新计算的还是仅仅脱水的?

  • 石英2.2 我在运行时动态创建和调度Quartz作业,并将Quartz配置为JDBC-Job-Store。这些作业需要在应用程序执行之间保持不变。在作业执行期间,我需要访问完整的Spring上下文(Spring管理的bean和JPA事务)。 然而,如果我试图将任何东西自动加入到我的工作中,那么我会得到一个错误,比如…“通过字段MyAutowiredField表示的不满足的依赖项” 我想不通。我已经

  • 我正在阅读JPA 2.1规范,有这个片段: 通过调用新实体实例上的persist方法或级联persist操作,新实体实例将同时成为托管实例和持久实例。应用于实体X的持久化操作的语义如下:。。。 是否可以在不显式调用persist()方法的情况下调用persist操作,或者persist操作始终必须是通过调用persist()的触发器? 假设我有两个实体A和B,其中A与B有一个域(cascade=P

  • EJB 3.0,EJB 2.0中使用的实体bean在很大程度上被持久性机制所取代。 现在,实体bean是一个简单的POJO,它具有与表的映射。 以下是持久性API中的关键角色 - Entity - 表示数据存储记录的持久对象。 可序列化是件好事。 EntityManager - 持久性接口,用于对持久对象(实体)执行添加/删除/更新/查找等数据操作。 它还有助于使用Query接口执行查询。 Per

  • 我试图通过新的android room库更新我的数据库,但它不起作用。这就是我的方法 主要活动。JAVA CarViewModel。JAVA 卡ao.java 我做了调试,新数据出现并调用viewModel。updateItems(list)方法。提前谢谢!