gpt4 book ai didi

java - Quartz 从按组条件过滤的数据库加载作业

转载 作者:行者123 更新时间:2023-11-30 05:43:28 25 4
gpt4 key购买 nike

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

启动任何服务时,我需要保证只有该服务产生的作业才会添加到quartz作业上下文中。我们可以通过指定的组来检测这些作业。

问题是:

1

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

2

如何在quartz调度程序中注册仅对当前服务有效的JobClass? (示例服务只能支持 googleRetry 作业,但数据库包含 fbRetry 和 linkedInRetry。实例应该只加载 googleRetry 作业。)我希望它可以从不同方面管理作业加载。

3

我在quartz 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 问题

是否可以使用selectMisfiredTriggersInGroupInState配置 quartz 恢复模式,如何?

最佳答案

看来注意力集中在不同的事情上。 Quartz 调度程序肯定应该知道它自己的工作。其他想法是管理不同服务(例如不同服务)的 quartz 调度程序(仅适用于同一集群)。解决方案是指定调度程序名称:

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

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

关于java - Quartz 从按组条件过滤的数据库加载作业,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55260130/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com