Skip to content

Commit

Permalink
#43
Browse files Browse the repository at this point in the history
  • Loading branch information
terrymanu committed Feb 1, 2016
1 parent b2fe55f commit 3529047
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 2 deletions.
Expand Up @@ -18,11 +18,20 @@
package com.dangdang.ddframe.job.api;

import org.quartz.Job;
import org.quartz.JobExecutionException;

/**
* 弹性化分布式作业接口.
*
* @author zhangliang
*/
public interface ElasticJob extends Job, Stopable {

/**
* 处理作业执行时异常.
*
* @param jobExecutionException 作业执行时异常
* @throws JobExecutionException 作业执行时异常
*/
void handleJobExecutionException(JobExecutionException jobExecutionException) throws JobExecutionException;
}
Expand Up @@ -92,13 +92,20 @@ public final void execute(final JobExecutionContext context) throws JobExecution
log.debug("Elastic job: execute all completed, job execution context:{}.", context);
}

private void executeJobInternal(final JobExecutionMultipleShardingContext shardingContext) {
private void executeJobInternal(final JobExecutionMultipleShardingContext shardingContext) throws JobExecutionException {
if (shardingContext.getShardingItems().isEmpty()) {
log.debug("Elastic job: sharding item is empty, job execution context:{}.", shardingContext);
return;
}
executionService.registerJobBegin(shardingContext);
executeJob(shardingContext);
try {
executeJob(shardingContext);
//CHECKSTYLE:OFF
} catch (final Exception ex) {
//CHECKSTYLE:ON
handleJobExecutionException(new JobExecutionException(ex));
}

executionService.registerJobCompleted(shardingContext);
if (configService.isFailover()) {
failoverService.updateFailoverComplete(shardingContext.getShardingItems());
Expand All @@ -107,6 +114,11 @@ private void executeJobInternal(final JobExecutionMultipleShardingContext shardi

protected abstract void executeJob(final JobExecutionMultipleShardingContext shardingContext);

@Override
public void handleJobExecutionException(final JobExecutionException jobExecutionException) throws JobExecutionException {
throw jobExecutionException;
}

@Override
public final void stop() {
stoped = true;
Expand Down

0 comments on commit 3529047

Please sign in to comment.