Elastic-Jobの異常プロセッサ

4632 ワード

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日に書いた)