在我的春季启动应用程序使用quartz
启动器。生成的所有作业都在运行时添加到DB中。数据库使用不同的服务,但只能处理作业,这些服务使用作业填充数据库。
启动任何服务,我需要保证只有这个工作生成的工作将被添加到石英工作环境中。我们可以按指定的组检测这些作业。
如何以最小的更改管理作业加载器(使用框解决方案)仅按指定的组过滤作业(不应在此作业上下文中处理不同的组)?
如何在quartz scheduler中注册只有JobClasses对当前服务有效? (例如,服务可能只支持googleRetry作业,但DB包含fbRetry和linkedInRetry。实例应仅加载googleRetry作业。)我希望它可以从不同方面管理作业加载。
我在石英DriverDelegate
下一个方法检测到了
/**
* <p>
* Get the names of all of the triggers in the given group and state that
* have misfired - according to the given timestamp.
* </p>
*
* @param conn
* the DB Connection
* @return an array of <code>{@link
* org.quartz.utils.Key}</code> objects
*/
List<TriggerKey> selectMisfiredTriggersInGroupInState(Connection conn,
String groupName, String state, long ts) throws SQLException;
但没有它的用法。我希望它应该在特殊恢复模式下使用(如果以组为例恢复过滤)但没有使用。我试图管理CustomDelegate
升级selectTriggersForRecoveringJobs
我需要的功能,但在这种情况下得到一个CURSOR issue
。
是否可以使用selectMisfiredTriggersInGroupInState
配置石英恢复模式,如何?
似乎注意力集中在不同的事情上。 Quartz调度程序肯定应该知道自己的工作。额外的想法管理不同服务的石英调度程序,如不同的服务(仅适用于相同的集群)。解决方案是指定调度程序名称:
spring:
quartz:
job-store-type: jdbc
properties:
org:
quartz:
thread-pool:
thread-count: 5
scheduler:
instanceName: mailCluster
调度程序实例名称用于SCHED_NAME
列中的不同表中。这是在db的实例加载时从过滤作业\触发器的重要条件。