我正在为正在创建的应用程序使用Quartz.NET,目前我有一个IJobListener侦听作业中的任何错误,然后将电子邮件发送给管理员。如果我也可以通过电子邮件发送生成的异常,那就太好了,但是如何从IJobListener中获取异常?
我需要一些帮助.我想弄清楚如何在Quartz.Net中安排工作.Quartz中的作业对应于我的Web应用程序中的任务,这些任务在我的Web应用程序中都是作业的一部分.我希望用户能够按需启动作业(WebApplication Context)并使其立即运行或在将来安排作业,并且可能在给定的时间间隔内重复.我知道所有这些项目是如何在Quartz中单独完成的,但我很难将它们整合在一起.
例如,在我的Web应用程序中,我可能按照特定顺序从事多项任务.我希望能够在quartz中安排这些任务,以便它们以我的Web应用程序中确定的相同顺序执行.有人知道怎么做吗?我已经阅读了Quartz文档,说要将下一个Job存储在JobDataMap中,正在努力解决它.
我正在等待创建Quartz作业,直到用户请求安排作业或运行它.您是否认为我应该创建作业并触发在Web App中创建任务,然后从任务对象中提取该信息以便在Quartz中进行调度?
我非常关注Quartz.Net教程中的指示,但是在尝试调试项目时遇到了启动错误.
The type initializer for 'Quartz.Impl.StdSchedulerFactory' threw an exception.
Run Code Online (Sandbox Code Playgroud)
我在网上找不到任何帮助.这是配置问题吗?有谁知道我在哪里可以得到一个需要配置的简单列表?
(我正在使用Quartz.Net 2.0)
内部异常:{"无法从配置部分'common/logging'获取Common.Logging的配置."}
我在基于Spring 3.0的应用程序中使用Quartz Scheduler.我成功地能够创建新的调度程序,它们工作正常.
我见过这样的参考.
但是..我无法在我的石英作业文件中检索servletContext.任何人都可以帮助我如何在executeInternal()方法中检索servletContext引用?
Gunjan Shah,thx.
我正在尝试设置一个作业,使其在我的调度程序第一次启动时运行一次,然后在每天的午夜运行一次。这是我的作业和触发器的XML。每天一次的触发器起作用,但是一次性触发器则不起作用。
<job>
<name>MyJob</name>
<group>MyJobGroup</group>
<job-type>MyScheduledJob, MyJobAssembly</job-type>
<description>My job, yo</description>
<durable>true</durable>
<recover>false</recover>
</job>
<trigger>
<cron>
<name>MyTrigger</name>
<group>MyTriggerGroup</group>
<job-name>MyJob</job-name>
<job-group>MyJobGroup</job-group>
<cron-expression>0 0 0 1/1 * ? *</cron-expression>
</cron>
<simple>
<name>MyOneTimeTrigger</name>
<group>MyTriggerGroup</group>
<description>Run once at startup, G</description>
<misfire-instruction>SmartPolicy</misfire-instruction>
<volatile>false</volatile>
<job-name>MyJob</job-name>
<job-group>MyJobGroup</job-group>
<repeat-count>0</repeat-count>
<repeat-interval>0</repeat-interval>
</simple>
</trigger>
Run Code Online (Sandbox Code Playgroud) 几个关于Quartz的单独问题
如果我想要一次执行事件,那就足够了
trigger.setRepeatCount(0);
Run Code Online (Sandbox Code Playgroud)考虑这个片段.当预定时间"在此之前"时,事件运行,并且在预定时间在将来时无法执行
JobDetail job = new JobDetail();
job.setName(eventType.toString() + " event");
job.setJobClass(Action.class);
SimpleTrigger trigger = new SimpleTrigger();
trigger.setStartTime(new Date(momentInTime.inMillis()));
trigger.setName("trigger");
trigger.setRepeatInterval(repeatFrequency.inMillis());
trigger.setRepeatCount(SimpleTrigger.REPEAT_INDEFINITELY);
scheduleManager.getScheduler().scheduleJob(job, trigger);
Run Code Online (Sandbox Code Playgroud)使用上面的代码,我观察以下内容
Time now : 1352410780356
Will execute at : 1352410840356 // 1 min interval
Execution starts : 1352410840368
Run Code Online (Sandbox Code Playgroud)
现在和计划执行的时间之间的差异恰好是1分钟..
好的..尝试更大的间隔
Time now : 1352411061156
Will execute at : 1352411301156 // 3 min interval
Execution starts : 1352411301165
Run Code Online (Sandbox Code Playgroud)
再次..差异正好是3分钟,如
执行应该在某个时刻
new MomentInTime(new DayOfMonth(8), new HourOfDay(15), new MinuteOfHour(48));
Run Code Online (Sandbox Code Playgroud)
它实际上开始(似乎开始,我应该说)作为当前时间和请求时间之间的偏移(甚至是偏移).
看起来,如果它10:43:25和我想要一份工作开始10:45:00,它会发现有两个甚至几分钟的差异,并安排工作10:45:25. …
我正在使用带有Quartz的spring,并且每个东西都工作正常但是之前的一些cofigured触发器也被执行了,因为它们存储在Quartz表中.我们可以手动删除所有未配置的触发器并执行应用程序,但这不是一个好习惯.我想通过spring + quartz属性或其他解决方案删除所有触发器.
当我在spring配置文件中配置了3个触发器时
<property name="triggers">
<list>
<ref bean="FirstTrigger" />
<ref bean="secondTrigger" />
<ref bean="ThirdTrigger"/>
</list>
</property>
Run Code Online (Sandbox Code Playgroud)
当服务器启动时,所有触发器都存储在Quartz表中,并带有相应的cron触发器和作业详细信息.如果我删除了我的配置中的任何触发器,例如我在上面删除了第二个触发器,但它没有从Quartz表中删除.那时DBtrigger(删除触发器)也执行了.
在spring + Quartz集成中,是否有任何属性来处理这个问题,还是我们需要为此问题做些其他事情?
提前致谢.
今天,我迭代
public void unschedule(final ScheduledEvent event) throws SchedulerException {
...
scheduler.deleteJob(event.getName(), "my group");
...
}
Run Code Online (Sandbox Code Playgroud)
如果我想要的是取消安排所有工作,这可以做得更好(更快)吗?
我刚开始学习Quartz,网站列出了几个例子(http://quartz-scheduler.org/documentation/quartz-2.2.x/examples/),但我找不到java程序的源代码.
这些文件夹仅包含运行程序所需的批处理文件,而指南说明源位于org.quartz.examples.包中.我找不到该包或java文件.
我有这个问题:我的应用程序有一个石英调度程序,每X分钟运行一个任务.此应用程序部署在两个服务器实例中,因此每个实例都在同时执行任务.我想同时只执行一项任务.
我们已经使用Spring配置了Quartz,我们的应用服务器是WAS.
你建议哪些选择?