Elastic Job 入门教程(二)— Spring Boot框架下是实现Elastic Job 脚本作业(Script Job)
在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);
}
}
更多源码请参考:
https://github.com/ypmc/spring-cloud/tree/master/spring-elastic-job