问题标签 [quartz.net-2.0]

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 投票
1 回答
361 浏览

quartz.net - 从 Quartz.Net 1.x 迁移到 2.x 时,我是否必须更改调度程序的配置和启动方式?

以下是我在 1.x 中配置和启动 Quartz.Net 调度程序的方法:

迁移到 2.x 后,我是否必须在这里更改一些内容?

最重要的是仍然是quartz.dataSource.default.providerSQL Server 还是SqlServer-20那里有什么改变?

0 投票
1 回答
523 浏览

c# - 关于 Quartz.net 2.0 实施的问题和帮助

我正在尝试编写一个实现 Quartz.net 2.x 的简单概念验证应用程序。我从未见过如此糟糕的文档借口。我有很多问题,我似乎无法回答。似乎文档假定您一直在使用 1.x 版本并且正在迁移到 2.x(实际上 2.x 教程的很大一部分是特定于 1.x 的。)嗯,我从未使用过基于 Java 的Quartz,Quartz.net 1.x,显然不是 2.x。所以我会尽量把我的问题安排得井井有条。对其中任何一个的答案或对文档、教程等的指导将是最受欢迎的。

  • 最终我只是想实现 Quart.net 2.0 来触发任何琐碎的工作(嵌入。不是服务。)

    1. Quartz.net 执行的作业的结构是什么?方法、类等?似乎是一堂课,但我似乎找不到这个问题的明确答案。

    2. 有人能解释一下工厂、商店和数据图是什么,什么时候应该使用它们吗?

    3. XML 怎么了?一些教程显示正在使用 XML……有些则没有。何时以及为什么要使用 XML?

我现在就停在那里。我希望有人有时间帮助我解决这个问题。我将不胜感激。虽然代码总是有用的,但我对理解这个过程更感兴趣。我将需要在未来的项目中使用 Quartz.net。

0 投票
1 回答
23433 浏览

c# - 使用 Quartz.NET 调度 Cron 作业

我正在尝试使用 Quartz.NET 安排一些工作,但我无法让它工作。我尝试了以下代码,但在达到指定时间时没有任何反应。

更新:

我还尝试了以下操作,以确保不是 Cron 表达式导致问题。也没有为我工作......

请注意,它trigger.GetNextFireTimeUtc()返回一个有效的时间值,但该作业永远不会被触发。

我哪里做错了?

0 投票
1 回答
638 浏览

quartz.net-2.0 - 如何获取由具有不同名称的零线程调度程序实例创建的 JobDetails/Triggers?

我正在从 Quartz.net 1.x 迁移到 2.x,由于某种原因,创建作业/触发器的调度程序的实例名称现在似乎非常重要......列SCHED_NAME已添加到大多数石英表中,并且它如果创建这些作业/触发器的零线程调度程序实例与用于获取和显示它们的实例具有不同的名称,则无法获取存储在数据库中的所有作业/触发器...

以下是关于我如何使用石英帮助您更好地理解问题的更多细节......

我有一个用于创建大多数作业/触发器的 UI,当我使用quartz.net 1.x 时,我正在创建具有不同名称的零线程调度程序实例,具体名称取决于应用程序的功能区域,我可以毫无问题地检索所有这些触发器由具有不同名称的实例触发。当我开始使用quartz.net 2.x时,由实例创建的作​​业/触发器与用于检索现有触发器以在UI中显示的实例不同,在使用IScheduler.GetJobDetailIScheduler.GetTriggersOfJob函数时没有返回,因此我修改了UI以使用单个实例和解决了这个问题。

但是,我也有一个 Windows 服务,每次将文件放入由FileSystemWatcher.NET 对象观察到的热文件夹时,该服务都会实例化我的自定义文件处理器对象,因此该文件处理器对象的每个实例都必须创建一个quartz.net 零线程调度程序使用唯一的名称来安排作业来处理被删除的文件,因为可以同时删除多个文件,并且如果文件处理器对象的两个实例试图创建 quart.net 零线程调度程序的实例相同的名称会导致quartz.net 中的异常。因此,这些由 windows 服务创建的作业/触发器不再对 UI 中使用的零线程调度程序可见,并且这些由 windows 服务创建的触发器不再显示在我的 UI 中。

无论如何,我的问题是有没有一种方法可以从数据库中检索所有作业/触发器,而不管石英.net 2.x 中调度程序的实例名称如何,如果没有,是否有关于如何解决此问题的任何想法?另外,有没有人知道为什么要SCHED_NAME添加到所有表中,为什么调度程序名称现在在 2.x 中如此重要,以及进行此更改背后的想法是什么?

编辑:哇,刚刚花了几个小时试图弄清楚这一点,看起来(除非我遗漏了什么)Quartz.net 2 由于这个调度程序名称问题而存在严重缺陷,这就是为什么......

由零线程调度程序创建的实例名称与多线程调度程序的实例名称不同的任何触发器将被多线程调度程序忽略,并且如果所有使用的调度程序具有相同的实例名称(或者您让 Quartz.net给所有调度程序默认实例名称)在多个并发线程上创建触发器变得不可能,因为在这些线程上创建的所有零线程调度程序都是以相同的名称创建的,这将导致 Quartz 中的异常......

0 投票
1 回答
4950 浏览

quartz.net - 简单作业的 SchedulerException

我正在尝试开始使用 Quartz.Net 2.0。一个非常简单的测试应用程序失败了SchedulerException

触发器的相关作业名称不能为空

代码改编自版本 2.0迁移指南

为什么会失败?

0 投票
2 回答
2840 浏览

quartz.net - 如何检查现有的 Quartz.net 调度程序?

最近将我的嵌入式 Quartz.net 调度程序升级到 2.x,此时我不得不放弃给我的零线程调度程序提供唯一名称,现在我遇到一个问题,即(很少)尝试创建 ZT 调度程序实例的对象抛出一个异常,因为另一个对象已经实例化了 ZT 调度程序的实例,并且由于我所有的 ZT 调度程序现在都有默认的“QuartzScheduler”名称,这会引发异常......

MySchedFactory.AllSchedulers.Count我尝试在调用后检查调度程序计数,MySchedFactory = new StdSchedulerFactory(properties)但是 StdSchedulerFactory 在实例化后立即创建 ZT 调度程序的实例,而不是在GetScheduler()调用方法时创建,所以这是一个死胡同......

在实例化之前我找不到任何其他检查现有调度程序的方法,StdSchedulerFactory并且正如我已经提到的,一旦它被实例化,它就会创建一个 ZT 调度程序的实例,所以我最终在我的 catch 块中使用了一个 while 循环只是一个可怕的解决方案,所以我希望有人知道检查现有 ZT 调度程序的更好方法......

有任何想法吗?

0 投票
1 回答
138 浏览

quartz.net-2.0 - Quartz.Net 文件存储

Quartz.Net 提供 RAMJobStore 和 AdoJobStore 来分别将内部状态存储在易失性内存和数据库中。

它还有效地允许通过观察 XML 文件将某些状态保存在文件中。

但是没有 FileJobStore,它会存储与 AdoJobStore 相同的信息,以防系统重新启动。这是对小规模计划进行保护以防止系统重新启动的明显解决方案。为什么?

我可以考虑效率方面的考虑。但优点是建立一个没有任何依赖关系的 Quartz.Net 的持久性实例。

0 投票
2 回答
210 浏览

quartz.net - 在 Quartz.net 2.1.x 中构建简单的作业触发器

在 2.1.x 版本中,为具有给定时间间隔和指定 DayOfWeek 的作业构建触发器的最简单方法是什么?

0 投票
1 回答
1908 浏览

quartz-scheduler - 即使作业需要更多时间,如何创建每 N 秒运行一次的石英作业

我想要实现的目标:我有一个每 5 秒触发一次的触发器和有状态的工作,有时需要超过 5 秒(例如 7 秒)和我现在所拥有的

我想要的是 :

我已经尝试过quartz.net 2 和1 版。
工作:

扳机:

编辑 我尝试使用WithMisfireHandlingInstructionIgnoreMisfires(),但是由于调度程序被关闭,或者因为没有可用的线程而发生了失败,在我的情况下 - 作业没有执行,因为我使用了 StatefulJob。也许我错了,但行为保持不变。

EDIT2 好的,带有“运行”标志的解决方案在单线程应用程序中完美运行。但是,如果我在几个线程(使用不同的参数)中运行这项工作,它将无法正常工作那么,是否可以使用石英实现我想要的行为?

0 投票
3 回答
3711 浏览

asp.net-mvc - 如何使用 Quartz.net 2.0 安排任务?

我正在尝试在 ASP.NET MVC 4 应用程序中使用 Quartz.net 2.0 安排任务,但我无法执行任务。

这是代码:

它在 global.asax 应用程序启动中调用

这是实现 IJob 接口的类:

我在 Execute 方法的开头放置了一个断点,但调试器并没有停在那里。我究竟做错了什么?

更新: 它与实现没有默认构造函数的 IJob 接口的类有关。如果我像这样修改构造函数,它会起作用:

但我需要能够注入我的依赖项。我正在使用 Autofac IoC 容器。