永发信息网

spring的quartz可以设置timeout参数吗

答案:2  悬赏:0  手机版
解决时间 2021-03-01 03:57
  • 提问者网友:兔牙战士
  • 2021-02-28 09:38
spring的quartz可以设置timeout参数吗
最佳答案
  • 五星知识达人网友:你可爱的野爹
  • 2021-02-28 10:03
可以,自己写一个,参考:
import org.apache.log4j.Logger;
import org.quartz.InterruptableJob;
import org.quartz.JobExecutionContext;
import org.quartz.UnableToInterruptJobException;

public class TimeOutThread extends Thread{
private static Logger log = Logger.getLogger(TimeOutThread.class);
private static long DEFAULT_TIMEOUT = 100l; //缺省的超时时间是100S;
private JobExecutionContext context;
private long timeout = -1l; //超时的秒数;
private TimeOutThread(){
super();
}
public TimeOutThread(JobExecutionContext context){
this();
this.context = context;
if( context != null ){
long _temp = context.getJobDetail().getJobDataMap().getLong("TimeOut");
this.timeout = _temp > 0l ? _temp : DEFAULT_TIMEOUT;
}
}
public void run(){
if( timeout == -1 )
return;
try{
sleep(timeout * 1000l);
}catch(InterruptedException ire){
log.error(ire);
}
try {
((InterruptableJob) context.getJobInstance())
.interrupt();
} catch (UnableToInterruptJobException e) {
throw new RuntimeException("exception", e);
}
}
}

import org.apache.log4j.Logger;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.quartz.JobListener;

public class DefaultListener implements JobListener{
private final static Logger log = Logger.getLogger(DefaultListener.class);
TimeOutThread _timeout;
public String getName() {
return "DefaultListener";
}
public void jobExecutionVetoed(JobExecutionContext context) {
// TODO Auto-generated method stub
}
public void jobToBeExecuted(JobExecutionContext context) {
_timeout = new TimeOutThread(context);
_timeout.start();
}
public void jobWasExecuted(JobExecutionContext context,
JobExecutionException jobException) {
_timeout.interrupt();
}
}

主要原理是利用JobListener机制,Job开始执行时,启动一个值守的Thread,先休眠规定的TimeOut时间,等休眠完后,假如还未执行完,就将这个Job给interrupt调。
全部回答
  • 1楼网友:有你哪都是故乡
  • 2021-02-28 10:22
应该不能吧。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯