elastic-job允许用户在任务调度异常时指定处理异常的异常处理器,异常处理器由接口JobExceptionHandler定义,其定义如下:
/**
* 作业异常处理器.
*
* @author zhangliang
*/
public interface JobExceptionHandler {
/**
* 处理作业异常.
*
* @param jobName 作业名称
* @param cause 异常原因
*/
void handleException(String jobName, Throwable cause);
}
如果没有指定自己的异常处理器elastic-job默认将使用DefaultJobExceptionHandler处理异常,其定义如下:
/**
* 默认作业异常处理器.
*
* @author zhangliang
*/
@Slf4j
public final class DefaultJobExceptionHandler implements JobExceptionHandler {
@Override
public void handleException(final String jobName, final Throwable cause) {
log.error(String.format("Job '%s' exception occur in job processing",
jobName), cause);
}
}
以下是一个自定义的异常处理器的示例:
public class MyJobExceptionHandler implements JobExceptionHandler {
private static final Logger logger
= Logger.getLogger(MyJobExceptionHandler.class);
@Override
public void handleException(String jobName, Throwable cause) {
logger.error(String.format("任务[%s]调度异常", jobName), cause);
}
}
异常处理器的配置是通过job-exception-handler属性指定的,所有作业类型的异常处理器的配置是通用的:
<job:simple id="myExceptionJob" class="com.elim.learn.elastic.job.MyExceptionJob"
cron="0/30 * * * * ?"
registry-center-ref="regCenter" sharding-total-count="4" overwrite="true"
job-exception-handler="com.elim.learn.elastic.job.MyJobExceptionHandler" />
(本文由Elim写于2017年10月2日)