问题标签 [quartz-scheduler]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
6621 浏览

grails - Grails Quartz Job 升级后没有 Hibernate 会话,导致 LazyInitializationException

我已将 Grails 1.0.4 应用程序升级到 1.1.1。升级后,我在执行 Quartz 作业(使用 Quartz 插件 0.4.1)时反复出现异常。该插件用于通过服务使用 Simple 和 Cron Triggers 手动安排作业(解释代码如下):

我的 BatchJob 作业设置如下:

这是 Batch.groovy(域)的缩写定义:

但是,当schedulerService.schedule()使用现有的已保存批处理调用时,我收到以下异常:

我已经尝试了以下操作来解决这个问题,但没有一个奏效:

  • 我已经static fetchMode = [batchStatus: 'eager']在我的 Batch 域类中指定
  • static mapping = { columns { batchStatus lazy:false }}在我的 Batch 域类上使用过
  • batch.attach()在调用Batch.get()Job后尝试使用

我不能BatchJob.triggerNow()在这种情况下使用,因为这只是几个示例之一 - 其他示例仍由服务安排,但可能被安排为 cron 作业或其他方式。我应该提一下,我在升级 Grails 时也升级了 Quartz 插件;之前的 Quartz 版本是 0.4.1-SNAPSHOT(相对于升级版,只有 0.4.1)。

如何让 Hibernate 会话在这些手动触发的 Quartz 作业中正常工作?

我还将这个问题发送到 grails-user 邮件列表,至于像这样的更小众问题,该列表似乎引起了更多的响应。如果有人从那里出来,我会用答案更新这个问题。这是一个链接

0 投票
2 回答
2160 浏览

java - 取消部署应用程序时触发功能

在 Glassfish 中部署/取消部署/重新部署 JEE5 应用程序时,如何自动触发 Java 函数以停止 Quartz 调度程序作业。

0 投票
3 回答
1460 浏览

java - 在石英中动态安排作业

我想创建一个通用的工作类,它需要一些参数而不是事先创建工作类?

所有设置都存储在数据库中,因此我们可以调用“刷新”,它会删除所有作业并从数据库中重新注册它们。

0 投票
1 回答
26290 浏览

java - 在石英中删除触发器

有没有办法删除具有特定作业的计划触发器?似乎删除触发器的唯一方法是删除整个作业,然后重新注册作业和触发器。

我的工作可能有 100 多个触发器,我真的不想删除该工作并在我只需要删除 1 个触发器时重新注册所有触发器。

此外,有没有办法在配置触发器后立即停止调度程序执行作业?

谢谢

0 投票
1 回答
941 浏览

java - 防止石英调度器作业立即触发

有没有办法阻止作业在首次注册时执行?我可能在 1 个作业下有 100 多个触发器,并且我不希望在应用程序服务器重新启动时执行所有触发器。

我们将作业/触发器存储在内存中,并将信息存储在我们的数据库中。所以当应用服务器启动时,我们注册了所有的作业/触发器。

0 投票
1 回答
1096 浏览

.net - Quartz .Net 作业调用 WCF 服务

我从 Quartz .Net 作业中调用 WCF 服务的最佳方式是什么?

编写一个单独的 exe 来启动 WCF 代理并从作业中调用该 exe 是最简单的方法吗?这似乎可行,但有点令人费解。如果我能以某种方式让 Job 以某种方式注入代理,那就更好了。

谢谢,马特

0 投票
4 回答
20195 浏览

java - Quartz Java 恢复作业会执行多次

对于我的应用程序,我创建作业并使用 CronTriggers 安排它们。每个作业只有一个触发器,并且作业名称和触发器名称都相同。没有作业共享触发器。

现在当我创建一个像这样“0/1 * * * *?”的cron触发器时 它指示作业每秒执行一次,它工作得很好。

当我第一次通过调用暂停工作时,问题就出现了:

然后在假设 50 秒后恢复工作:

我看到的是,在这 50 秒内,作业没有按要求执行。但是在我恢复工作的那一刻,我看到同时执行了 50 次工作!!!

我认为这是由于失火指令的默认设置,但即使在创建时将触发器的失火指令设置为此:

同样的事情也会发生。任何人都可以提出解决此问题的方法吗?

0 投票
1 回答
2477 浏览

jobs - 不能用石英运行多个作业

嗨,我正在尝试使用批处理框架运行两个作业。我的问题是 SimpleJobLauncher 只运行一个作业列表中的最后一个作业。我在做什么:我的数据库中有两个工作以及工作的步骤。我从数据库中读取作业数据并按以下方式处理它

public class BatchJobScheduler { private static Log sLog = LogFactory.getLog(BatchJobScheduler.class); private ApplicationContext ac; private DataSourceTransactionManager mTransactionManager; private SimpleJobLauncher mJobLauncher; private JobRepository mJobRepository; private SimpleStepFactoryBean stepFactory; private MapJobRegistry mapJobRegistry; private JobDetailBean jobDetail; private CronTriggerBean cronTrigger; private SimpleJob job; private SchedulerFactoryBean schedulerFactory; private static String mDriverClass; private static String mConnectionUrl; private static String mUser; private static String mPassword; public static JobMetaDataFeeder metadataFeeder; static { try { loadProperties(); metadataFeeder = new JobMetaDataFeeder(); metadataFeeder.configureDataSource(mDriverClass, mConnectionUrl, mUser, mPassword); } catch (FileNotFoundException e) { } catch (IOException e) { } catch (SQLException e) { } catch (ClassNotFoundException e) { } }

}

public class MailJobLauncher extends QuartzJobBean { /** * Special key in job data map for the name of a job to run. */ static final String JOB_NAME = "jobName"; private static Log sLog = LogFactory.getLog(MailJobLauncher.class); private JobLocator mJobLocator; private JobLauncher mJobLauncher;

} 我无法弄清楚为什么启动器忽略了所有其他工作,请帮助我。问候

0 投票
2 回答
621 浏览

c# - 计划设置字符串而不使用 CRON 字符串

目前我们正在使用 cron 字符串在我们的项目中设置 Quartz 作业。但由不是开发人员的管理员设置似乎有点过分或有点混乱。所以,我们尝试使用这样的简单字符串,

是否有任何现有的框架(或在 Quartz 中)我可以从这个字符串中获取一个 cron 字符串?(我知道我可以解析这个以获得一个简单的触发器,但不想干)

0 投票
2 回答
2060 浏览

.net - Quartz.Net 线程池

我设置了quartz.net 来运行几个预定的作业和几个轮询作业。轮询作业可以包含可能需要 10 分钟的运行代码。这些作业从用户操作排队(因此可能有 x 个用户操作的队列)。我已经安排了当时必须运行的工作。但是,这些线程都可能被长时间运行的轮询作业用完。有没有办法为轮询作业永远不会使用的计划任务指定线程?

我知道线程优先级,但是如果其他线程已在使用中,这并不能保证计划的作业将运行。

谢谢你的帮助。