Elastic - job 스 크 립 트 작업

더 읽 기
스 크 립 트 작업 은 windows 의 cmd, Liux 의 셸 파일 등 스 크 립 트 파일 을 정기 적 으로 스케줄 링 하 는 데 사 용 됩 니 다. 스케줄 링 할 때 현재 스케줄 링 된 ShardingContext 를 JSON 문자열 로 스 크 립 트 스케줄 링 매개 변수 로 전달 합 니 다.작업 에 대응 하 는 class 를 지정 할 필요 가 없습니다. 왜냐하면 우 리 는 우리 자신의 class 를 통 해 스케줄 링 을 하 는 것 이 아니 기 때 문 입 니 다.스 크 립 트 작업 은 설정 할 때 로 설정 합 니 다. 예 는 다음 과 같 습 니 다.
<job:script id="myScriptJob" registry-center-ref="regCenter"
	cron="0/30 * * * * ?" sharding-total-count="3"
	sharding-item-parameters="0=shard-0,1=shard-1,2=shard-2"
	script-command-line="echo hello" overwrite="true"/>

그 중에서 script - command - line 속성 은 이 스케줄 에 대응 하 는 스 크 립 트 파일 경로 나 실행 가능 한 명령 을 지정 하 는 데 사 용 됩 니 다.hello 와 ShardingContext 에 대응 하 는 JSON 형식 을 간단하게 인쇄 할 뿐 입 니 다.다른 설정 매개 변 수 는 이전에 소개 한 간단 한 작업 의 설정 매개 변수 와 유사 합 니 다.
스 크 립 트 작업 은 com. dangdang. ddframe. job. executor. type. ScriptJobExecutor 에서 실 행 됩 니 다.그 코드 는 다음 과 같다.
public final class ScriptJobExecutor extends AbstractElasticJobExecutor {
    
    public ScriptJobExecutor(final JobFacade jobFacade) {
        super(jobFacade);
    }
    
    @Override
    protected void process(final ShardingContext shardingContext) {
        final String scriptCommandLine = ((ScriptJobConfiguration) getJobRootConfig().getTypeConfig()).getScriptCommandLine();
        if (Strings.isNullOrEmpty(scriptCommandLine)) {
            throw new JobConfigurationException("Cannot find script command line for job '%s', job is not executed.", shardingContext.getJobName());
        }
        executeScript(shardingContext, scriptCommandLine);
    }
    
    private void executeScript(final ShardingContext shardingContext, final String scriptCommandLine) {
        CommandLine commandLine = CommandLine.parse(scriptCommandLine);
        commandLine.addArgument(GsonFactory.getGson().toJson(shardingContext), false);
        try {
            new DefaultExecutor().execute(commandLine);
        } catch (final IOException ex) {
            throw new JobConfigurationException("Execute script failure.", ex);
        }
    }
}

(본 고 는 Elim 이 2017 년 10 월 1 일 에 작성)

좋은 웹페이지 즐겨찾기