按组标准从db过滤的Quartz加载作业

问题描述 投票:1回答:1

在我的春季启动应用程序使用quartz启动器。生成的所有作业都在运行时添加到DB中。数据库使用不同的服务,但只能处理作业,这些服务使用作业填充数据库。

启动任何服务,我需要保证只有这个工作生成的工作将被添加到石英工作环境中。我们可以按指定的组检测这些作业。

问题是:

1

如何以最小的更改管理作业加载器(使用框解决方案)仅按指定的组过滤作业(不应在此作业上下文中处理不同的组)?

2

如何在quartz scheduler中注册只有JobClasses对当前服务有效? (例如,服务可能只支持googleRetry作业,但DB包含fbRetry和linkedInRetry。实例应仅加载googleRetry作业。)我希望它可以从不同方面管理作业加载。

3

我在石英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配置石英恢复模式,如何?

java spring quartz-scheduler restore quartz
1个回答
1
投票

似乎注意力集中在不同的事情上。 Quartz调度程序肯定应该知道自己的工作。额外的想法管理不同服务的石英调度程序,如不同的服务(仅适用于相同的集群)。解决方案是指定调度程序名称:

spring:
  quartz:
    job-store-type: jdbc
    properties:
      org:
        quartz:
          thread-pool:
            thread-count: 5
          scheduler:
            instanceName: mailCluster

调度程序实例名称用于SCHED_NAME列中的不同表中。这是在db的实例加载时从过滤作业\触发器的重要条件。

© www.soinside.com 2019 - 2024. All rights reserved.