Elastic Job 入門教程(二)— Spring Boot框架下是實現Elastic Job 指令碼作業(Script Job)
阿新 • • 發佈:2018-12-11
在Elastic Job 入門教程(一)— 與Spring Boot整合這篇文章中,我們簡單介紹了Spring Boot與Elastic Job 的整合,並簡單實現了SimpleJob型別作業。本章,我們介紹Spring Boot框架下如何實現Elastic Job的Script Job型別作業。
application.yml中指令碼作業配置
scriptJob: cron: 0/5 * * * * ? shardingTotalCount: 2 shardingItemParameters: 0=CIB,1=ICBC jobDescription: "elastic script job" jobParameter: "hello elastic script job" jobName: "elastic script job name" scriptCommandLine: "d:/run.bat"
定義Bean獲取指令碼作業屬性
@Getter @Setter @NoArgsConstructor @AllArgsConstructor @ToString @Configuration @ConfigurationProperties(prefix = "scriptJob") public class ElasticScriptJobProperties { private String cron; private int shardingTotalCount; private String shardingItemParameters; private String jobDescription; private String jobParameter; private String jobName; private String scriptCommandLine; }
指令碼作業配置
@Configuration public class ElasticScriptJobConfig { @Autowired private ElasticScriptJobProperties elasticScriptJobProperties; @Bean public LiteJobConfiguration scriptLiteJobConfiguration() { JobCoreConfiguration.Builder builder = JobCoreConfiguration.newBuilder(elasticScriptJobProperties.getJobName() , elasticScriptJobProperties.getCron() , elasticScriptJobProperties.getShardingTotalCount()); JobCoreConfiguration jobCoreConfiguration = builder .shardingItemParameters(elasticScriptJobProperties.getShardingItemParameters()) .description(elasticScriptJobProperties.getJobDescription()) .jobParameter(elasticScriptJobProperties.getJobParameter()) .build(); ScriptJobConfiguration scriptJobConfiguration = new ScriptJobConfiguration(jobCoreConfiguration , elasticScriptJobProperties.getScriptCommandLine()); return LiteJobConfiguration .newBuilder(scriptJobConfiguration) .overwrite(true) .build(); } }
指令碼作業定義
@Component
public class ElasticScriptJob {
@Autowired
private ZookeeperRegistryCenter regCenter;
@Autowired
private LiteJobConfiguration scriptLiteJobConfiguration;
@Bean(initMethod = "init")
public JobScheduler scriptJob() {
return new JobScheduler(regCenter, scriptLiteJobConfiguration);
}
}
更多原始碼請參考: