假设我有CronTriggerBean类似的
<bean id="midMonthCronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail" ref="reminderJobDetail" />
<property name="cronExpression" value="0 0 6 15W * ?" />
</bean>
Run Code Online (Sandbox Code Playgroud)
测试这个bean实际上会在指定日期触发的最佳方法是什么,即在每个月的15号最接近的工作日上午6点?
更新:这应该是一个单元测试,所以我不会启动VM或更改系统时间.
我正在使用Quartz Scheduling,有2个工作.第一个作业执行约2分钟的任务,第二个作业是为临时文件的清洁操作设置.因此,我需要设置计划,以便在第一个作业执行/完成执行任务后,我需要在第二个作业的帮助下执行清理操作.
考虑示例9 - Quartz 2.1.x下的Job Listeners,它声明我们可以定义一个名为jobWasExecuted(_,_)的方法; 在Job Listener中,它在第一个作业执行/或进入运行状态时执行.
我们是否能够设置可以监听第一个作业然后执行第二个作业的计划?要么,
我们是否能够像在Java多线程中那样定义join()方法,它可以在完成第一个作业时执行?
我在集群模式下使用Quartz
由于过度调用导致数据库级别出现一些行锁争用:
org.quartz.jobStore.selectWithLockSQL
"SELECT*FROM QRTZ_LOCKS WHERE SCHED_NAME =:"SYS_B_0"AND LOCK_NAME =:1 FOR FORDDATE"
我读石英文档,但我仍然不清楚为什么执行上面的查询.
这个行锁的目的是什么?
问候
我一直在阅读有关java/spring/hibernate的内容并通过"虚拟"示例工作,所以我告诉我的朋友为我推荐一些更难的东西,现在我被卡住了......这是我能想到的最简单的类
package spring.com.practice;
public class Pitcher {
private String shout;
public String getShout() {
return shout;
}
public void setShout(String shout) {
this.shout = shout;
}
public void voice()
{
System.out.println(getShout());
}
}
Run Code Online (Sandbox Code Playgroud)
通过voice()从spring bean 调用metod打印出来的最简单的方法是什么,并且每隔30秒重复一次就可以说,这是我到目前为止所得到的:
<bean id="simpleTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean">
<property name="jobDetail" ref="jobSchedulerDetail" />
<property name="startDelay" value="0" />
<property name="repeatInterval" value="30" />
</bean>
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="schedulerName" value="pitcherScheduler" />
<property name="triggers">
<list>
<ref bean="simpleTrigger" />
</list>
</property>
</bean>
<bean id="pitcher" class="spring.com.practice.Pitcher">
<property name="shout" value="I started executing..."></property>
</bean>
Run Code Online (Sandbox Code Playgroud)
是的,我正试图在Jboss 5上运行它,我正在用maven构建一个项目. …
有没有办法确定Quartz中的特定触发器是否处于暂停状态?
我知道调度程序上的getPausedTriggerGroups()方法,但似乎没有办法找出特定JobDetail的特定触发器的暂停状态.
任何友好的建议?
多个线程可以同时安全地调用StdSchedulerFactory返回的Scheduler实例上的方法吗?
我正在寻找可扩展的"at"替代品,具有高可用性.它必须支持在运行时添加和删除作业.
一些背景:我有一个应用程序,我触发数百万个事件,每个事件只发生一次.我不需要像机制这样的机制(本月的第一个星期日等),只需要日期,时间和背景.
目前我正在使用Quartz调度程序,虽然它是一个非常好的项目,但它很难处理我们抛出的事件数量,即使经过大量调整(分片,增加轮询间隔等)后也是如此它在下划线数据库上执行的基本锁定.而且,这对我们来说有点矫枉过正,因为基本上我们有数百万次一次触发,而且工作量相对较少.
我很感激任何建议
我对Quartz很新,我对工作生命周期有些怀疑.
假设我有一个单独的工作配置来做一些事情.
这项工作开始并结束其工作.当它再次触发它是同一个实例(可能设置为睡眠并由调度程序唤醒)或者它是一个新的作业实例(一旦作业结束它就被杀死,当再次满足触发条件时,创建一个新的作业实例) ?
我问这样的问题,因为当我调试我的应用程序(带有石英支持的Spring 3 mvc)时,我看到作业的新实例,并且每次触发作业时都会打开SimpleThreadPool $ WorkerThreadRun()的新线程,以便SimpleThreadPool $ WorkerThreadRun()线程堆积,永不终止.
我只是想知道这种行为是否正常还是我必须填补记忆;-)
谁能给我一些解释?提前致谢.
我使用simpleInjector作为IOC容器bue我没有清楚地看到ReturnJob的责任是什么,我想知道如何进行?
这是我到目前为止所做的代码:
public class SimpleInjectorJobFactory:IJobFactory
{
private readonly Container _container;
public SimpleInjectorJobFactory()
{
_container= new Container();
}
public IJob NewJob(TriggerFiredBundle bundle, IScheduler scheduler)
{
return _container.GetInstance(bundle.JobDetail.JobType) as IJob;
}
public void ReturnJob(IJob job)
{
throw new System.NotImplementedException();
}
}
Run Code Online (Sandbox Code Playgroud) 如何检查计划的Quartz cron作业是否正在运行?有任何API可以进行检查吗?
quartz-scheduler ×10
java ×7
spring ×3
c# ×1
concurrency ×1
cron ×1
jboss ×1
quartz.net ×1
scheduler ×1
scheduling ×1
spring-3 ×1
spring-mvc ×1
unit-testing ×1
weblogic ×1